面向对象的命名约定

时间:2011-07-20 18:48:44

标签: php oop methods

使用附加到对象的方法构建代码的名称是什么?

例如:

" ... ".trim 

obj.method()

起初许多人认为这是面向对象,但php是面向对象的(部分是),但它的语法完全不同trim(" ... ")

TL; DR“面向对象”和“一切都是对象”都不是有效答案,除非.......

人们经常建议PHP是“面向对象”,库是“面向对象的”,但PHP库的代码通常由大量静态类构成。

例如RedBean:

  • - [R ::分配($豆)
  • - [R ::商店($豆)
  • - [R ::垃圾($豆)

这不遵循obj.method语法,但应该是面向对象的。 PHP的面向对象是否具有误导性,或者obj.method()编码风格是否有更好的名称。

4 个答案:

答案 0 :(得分:1)

PHP可以做到这两点。您可以编写面向对象的代码,并且可以编写过程代码。 程序代码更容易理解和编写,并且大多数PHP程序员不会真正理解OOP,所以他们编写,我称之为程序代码伪装成OOP。 这包括静态方法和单例等。

答案 1 :(得分:1)

PHP的许多核心功能都是C遗产,所以如果它不符合OOP惯例,不要感到惊讶。

重要的是调用对象上的方法遵循OOP约定。

答案 2 :(得分:1)

PHP中的字符串不被视为对象而是标量值。因此,除非标量字符串文字首先转换为对象,否则语法"..."->trim()无效。

有一个自动装箱的开放提议(将标量值自动转换为对象)。这将允许通常的面向对象语法。然而,自动装箱会有一点性能损失。点击此处了解更多信息:

https://wiki.php.net/rfc/autoboxing

答案 3 :(得分:1)

对于RedBeanPHP,我使用静态方法作为外观。这比纯粹的OO代码更加用户友好。您不必了解RedBeanPHP的所有内部结构以便使用它(还有一种使用lib的OO方式)。在我看来,RedBeanPHP真的是面向对象的;在幕后,它使用继承,接口,多态和模式,如适配器,工厂,观察者。

另外,我认为OOP更像是一种思维方式,而不仅仅是一种语法。例如,您也可以使用结构和函数指针或类似GTK来制作面向对象的系统。语言中的OOP功能只是为了方便。此外,因为PHP是一种动态语言(与静态类型相反),它不必依赖于类型,它只能扫描对象以获得所需的行为。在我看来,这是一件好事,因为它更像Java中的深层次结构更灵活,更易于维护。我曾经是一个OO纯粹主义者,但我最近接受了OOP实用主义;只使用两全其美。