在像Ruby / Javascript这样的语言中,您可以将对象运算符应用于任何东西。即,
var string = "Pancakes";
alert(string.length);
// 8
当一切都在对象中时,这叫什么?是否有任何可以使PHP以这种方式运行而不必自己一起破解的东西?这是PHP社区目前要求的东西吗?
执行echo (new String("Hello"))->length()
的能力会很好,甚至"Hello"->length();
我甚至会满足于:{/ p>
$var = "Hello";
echo $var->length;
答案 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中完成。这不太实际,人们会认为你疯了。