使用附加到对象的方法构建代码的名称是什么?
例如:
" ... ".trim
或
obj.method()
起初许多人认为这是面向对象,但php
是面向对象的(部分是),但它的语法完全不同trim(" ... ")
。
人们经常建议PHP是“面向对象”,库是“面向对象的”,但PHP库的代码通常由大量静态类构成。
例如RedBean:
这不遵循obj.method
语法,但应该是面向对象的。 PHP的面向对象是否具有误导性,或者obj.method()
编码风格是否有更好的名称。
答案 0 :(得分:1)
PHP可以做到这两点。您可以编写面向对象的代码,并且可以编写过程代码。 程序代码更容易理解和编写,并且大多数PHP程序员不会真正理解OOP,所以他们编写,我称之为程序代码伪装成OOP。 这包括静态方法和单例等。
答案 1 :(得分:1)
PHP的许多核心功能都是C遗产,所以如果它不符合OOP惯例,不要感到惊讶。
重要的是调用对象上的方法遵循OOP约定。
答案 2 :(得分:1)
PHP中的字符串不被视为对象而是标量值。因此,除非标量字符串文字首先转换为对象,否则语法"..."->trim()
无效。
有一个自动装箱的开放提议(将标量值自动转换为对象)。这将允许通常的面向对象语法。然而,自动装箱会有一点性能损失。点击此处了解更多信息:
答案 3 :(得分:1)
对于RedBeanPHP,我使用静态方法作为外观。这比纯粹的OO代码更加用户友好。您不必了解RedBeanPHP的所有内部结构以便使用它(还有一种使用lib的OO方式)。在我看来,RedBeanPHP真的是面向对象的;在幕后,它使用继承,接口,多态和模式,如适配器,工厂,观察者。
另外,我认为OOP更像是一种思维方式,而不仅仅是一种语法。例如,您也可以使用结构和函数指针或类似GTK来制作面向对象的系统。语言中的OOP功能只是为了方便。此外,因为PHP是一种动态语言(与静态类型相反),它不必依赖于类型,它只能扫描对象以获得所需的行为。在我看来,这是一件好事,因为它更像Java中的深层次结构更灵活,更易于维护。我曾经是一个OO纯粹主义者,但我最近接受了OOP实用主义;只使用两全其美。