Cha*_*les 10
PHP没有像Ruby那样的mixin.也就是说,在定义类之后,您无法更改类的任何内容,并且在创建实例后,您无法将新方法添加到实例1中.PHP 在5.4中只有普通的旧的vanilla单继承机制,接口和组合特征.
PHP可能与Ruby模块最接近的是一个类.PHP可能对Ruby mixin最接近的是特征,但特征不是动态的.在定义类时,它们必须由任何实现类引用.它们不能在运行时添加或修改,并且作为整体应用于类,而不是单个实例.
虽然PHP 5.3具有名称空间,但它们仅限于保存函数,类,常量,特征和接口,这意味着您无法将变量定义为名称空间的第一类成员.尝试这样做会导致它们在根命名空间中被定义,这当然不是任何人想要的.此外,没有名称空间继承机制,只有名称空间引用机制.
1:虽然您可以通过简单地引用它们来创建对象后添加实例变量(属性),但这被认为是一种不好的做法.属性也可以包含匿名函数,但是以这种方式滥用属性来模拟添加方法也是不好的做法.