php - php中类似于Ruby的模块概念

标签 php ruby

在 php 中是否有类似于 ruby​​ module 构造的东西?

基本上我需要为混合黑白不同类等创建一个模块。

我知道 php 有混合 b/w 不同类的概念,但不确定模块。

最佳答案

PHP 没有像 Ruby 那样的混入。也就是说,类在定义后就无法更改,也无法在实例创建后正常添加新方法1。 PHP 具有普通的老式单一继承机制、接口(interface)和composing traits。在 5.4。

PHP 可能拥有的最接近 Ruby 模块的东西是类。 PHP 可能具有的与 Ruby mixin 最接近的东西是特征,但特征不是动态的。它们必须在定义类时被任何实现类引用。它们不能在运行时添加或修改,并且应用于整个类,而不是单个实例。

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

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

关于php - php中类似于Ruby的模块概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5405007/

相关文章:

ruby - 使用 Net::SSH 或创建 STDIN 套接字的交互式 SSH session

ruby - 在 Rails 3 中创建一个 plist

arrays - 如何在 Ruby 中以不区分大小写的方式获取唯一元素并考虑 nil 元素?

php - 锁定表如何工作?

php切换大小写问题

php - Laravel 4 命名空间没有\

php - 通过 PHP 从 iOS 文本字段向 mySQL 数据库添加新数据

ruby-on-rails - 在 ruby​​ 中深度压缩嵌套哈希?

python - 如何在不安装解释器的情况下部署 Perl/Python/Ruby 脚本?

php - 注意未定义索引 php 5.6