你有PHP的全局方法吗?

时间:2013-02-15 04:06:44

标签: php javascript ruby scalar

在像Ruby / Javascript这样的语言中,您可以将对象运算符应用于任何东西。即,

var string = "Pancakes";
alert(string.length);
// 8

当一切都在对象中时,这叫什么?是否有任何可以使PHP以这种方式运行而不必自己一起破解的东西?这是PHP社区目前要求的东西吗?

执行echo (new String("Hello"))->length()的能力会很好,甚至"Hello"->length();我甚至会满足于:{/ p>

$var = "Hello";
echo $var->length;

4 个答案:

答案 0 :(得分:1)

它被称为Object-oriented programming。 PHP支持OOP,但很多语言都是作为接受参数的平面函数实现的。

如果您想对它们进行操作,则需要定义自己的对象,否则您将不得不在内置类型(如strlen())上使用String等函数。

答案 1 :(得分:1)

Java程序员使用术语autoboxing来调用原始值的方法。 JavaScript也有这个功能,它通过创建临时包装器对象来工作。我不知道Ruby。

在PHP中,这是不可能的。 new String("Hello")->length()也不可能,主要是因为没有String类,其中包含length等方法。你可以创建自己的,但值得吗?此外,您可能对this hack感兴趣。

答案 2 :(得分:0)

他们称之为面向对象的编程。较新版本的PHP是OO。您可以使用方法创建类来完成您所指的内容。

答案 3 :(得分:0)

面向对象(OO)是事实之后被添加到PHP的东西。在实现OO之前,所有事情都是使用函数完成的(就像许多其他类C编程语言一样)。

对于PHP,字符串,整数,布尔值等只是数据。它们是原始类型,不能做任何事情;它们只是存储在内存中的命名值。这就是您需要使用strlen($str)等函数的原因。函数对值进行操作。

在像Ruby和Javascript这样的语言中,实际上大多数数据类型(如字符串)实际上是对象(或者在某些情况下是有点对象)。它们包含.length等各种属性以及.indexOf()等方法。这类数据类型的另一个词是复合类型(它们由多个东西组成)。

因此,在PHP中,您可以说{em>正常来编写strlen($str)来计算字符串的长度;同样,在Javascript或Ruby中,编写str.length 正常

可以在PHP中编写一个String类,但它有点不合适。这就像学会数到十,但坚持在基数7中完成。这不太实际,人们会认为你疯了。