php中的模块概念类似于Ruby

Ris*_*ogi 6 php ruby

是否有类似于PHP中的ruby 模块构造?

基本上我需要创建一个模块,用于混合黑白不同的类等.

我知道php具有mixins b/w不同类的概念,但不确定模块.

Cha*_*les 10

PHP没有像Ruby那样的mixin.也就是说,在定义类之后,您无法更改类的任何内容,并且在创建实例后,您无法将新方法添加到实例1中.PHP 在5.4中只有普通的旧的vanilla单继承机制,接口和组合特征.

PHP可能与Ruby模块最接近的是一个类.PHP可能对Ruby mixin最接近的是特征,但特征不是动态的.在定义类时,它们必须由任何实现类引用.它们不能在运行时添加或修改,并且作为整体应用于类,而不是单个实例.

虽然PHP 5.3具有名称空间,但它们仅限于保存函数,类,常量,特征和接口,这意味着您无法将变量定义为名称空间的第一类成员.尝试这样做会导致它们在根命名空间中被定义,这当然不是任何人想要的.此外,没有名称空间继承机制,只有名称空间引用机制.

1:虽然您可以通过简单地引用它们来创建对象后添加实例变量(属性),但这被认为是一种不好的做法.属性也可以包含匿名函数,但是以这种方式滥用属性来模拟添加方法也是不好的做法.