1

在 Ruby/Javascript 等语言中,您可以将对象运算符应用于任何事物。IE,

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

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

做事的能力echo (new String("Hello"))->length()会很好,甚至"Hello"->length(); 我什至会满足于:

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

4 回答 4

1

它被称为面向对象的编程。PHP 支持 OOP,但很多语言都是作为接受参数的平面函数实现的。

如果要对它们进行操作,则需要定义自己的对象,否则您将不得不使用strlen()内置类型(例如String.

于 2013-02-15T04:10:17.317 回答
1

Java 程序员使用术语自动装箱来表示对原始值调用方法的能力。JavaScript 也有这个特性,它通过创建临时包装对象来工作。我不知道鲁比。

在 PHP 中这是不可能的。new String("Hello")->length()也是不可能的,主要是因为没有Stringlength. 您可以创建自己的,但值得吗?此外,您可能对这个 hack感兴趣。

于 2013-02-15T04:22:13.520 回答
0

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

于 2013-02-15T04:11:58.387 回答
0

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

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

In languages like Ruby and Javascript most data types, such as strings, are, practically speaking, actually objects (or in some cases kinda-sorta objects). They contain various properties like .length, and methods like .indexOf(). Another word for such data types is a composite type (they are composed of more than one thing).

So, in PHP you can say that it is normal to write strlen($str) to figure out how long a string is; likewise, in Javascript or Ruby it is normal to write str.length.

It is possible to write a String class in PHP, but it is kind of beside the point. It is like learning to count to ten, but insisting that it be done in base-7. It is not very practical, and people will think you are crazy.

于 2013-02-15T04:43:16.517 回答