2013-02-15 32 views
1

在Ruby/Javascript等语言中,可以将对象运算符应用于任何事物。即,你可以在PHP中使用全局方法吗?

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

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

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

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

我相信PHP在没有“一起黑客攻击”的情况下可以做的很少,但这是另一个话题... – sstn 2013-02-15 04:30:45

回答

1

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

如果您想对它们进行操作,您需要定义自己的对象,否则就会被迫使用内置类型(如String)上的strlen()等功能。

+0

不,不,我知道它是OOP。我只是不知道是否有一个特定的名称能够调用所有变量的.toString()或.split()而不是爆炸(“\ n”,$ var)或(字符串)$ var .. – Steve 2013-02-15 04:11:54

+0

后者可以说是不是面向对象的,因为你调用的是函数而不是方法。 – 2013-02-15 04:13:40

+0

@Steve这似乎要么指[继承](http://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))或[duck typing](http://en.wikipedia.org/wiki/Duck_typing)(“* all variables *”)。 – 2013-02-15 04:14:11

0

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

1

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

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

0

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

说到PHP,字符串,整数,布尔等等都只是数据。他们是原始类型并且什么都不能做;它们只是存储在内存中的命名值。这就是为什么你需要使用功能,如strlen($str)。功能的运行值为

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

因此,在PHP中,你可以说它是正常的strlen($str)找出一个字符串是多少;同样,在Javascript或Ruby中,它是正常的来编写str.length

有可能在PHP中编写String类,但它有点不重要。就好像学会数到10,但坚持要以7为基数来完成。这不是很实际,人们会认为你疯了。

相关问题