Concept of Modules in php similar to Ruby
是否有类似于PHP中Ruby模块构造的东西?
基本上,我需要为B/W不同类等中的混合创建一个模块。
我知道PHP有混合B/W不同类的概念,但不确定模块。
PHP没有与Ruby有相同的混合函数。也就是说,在一个类被定义之后,您不能更改它的任何内容,并且在一个实例被创建之后,您不能明智地向它添加新的方法1。在5.4中,PHP只有普通的单一继承机制、接口和组合特性。
PHP最接近Ruby模块的是类。PHP最接近RubyMixin的是特性,但特性不是动态的。它们必须在定义类时被任何实现类引用。它们不能在运行时添加或修改,也不能作为一个整体应用于类,而不能应用于单个实例。
虽然php5.3有名称空间,但它们仅限于保存函数、类、常量、特性和接口,这意味着您不能将变量定义为名称空间的第一类成员。尝试这样做会导致在根命名空间中定义它们,这当然不是任何人都想要的。此外,没有名称空间继承机制,只有名称空间引用机制。
1:在通过简单地引用实例变量(属性)创建了一个对象之后,您可以添加实例变量(属性),但这被认为是一种不好的做法。属性也可以包含匿名函数,但以这种方式滥用属性来模拟添加方法也是不好的做法。