php - 静态类与实例化时的类成员访问

标签 php object global static-methods instantiation

在 5.4 之前的 PHP 版本中,我使用静态类来实例化对象并立即调用所需的函数,例如:

$result = Foo::init()->bar();

在上面的示例中,静态函数 init() 只是实例化包含它的类并将其作为对象返回。这提供了方法链接功能,并允许我立即调用 bar(),所有这些都在一行代码中完成。静态函数 init() 看起来像这样:

static public function init() {
   $object = new self();
   return $object;
}

现在 PHP 5.4 添加了对实例化时类成员访问的支持,我现在可以执行以下操作,而不是使用静态类:

$result = (new Foo)->bar();


我的问题:我使用静态类的旧方法是否不好?如果是,为什么?既然 PHP 支持在实例化时访问类成员,那么这是在对象实例化后立即访问类成员的更正确方法吗?

最佳答案

是的,新方法更正确,所以如果可以的话就使用它。不过,你之前的做法并不“糟糕”;这是解决令人沮丧的问题的干净、简单的解决方案。

关于php - 静态类与实例化时的类成员访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11285512/

相关文章:

c++ - 在全局范围内使用静态变量和函数

php - 任何人都可以访问我的 PHP 源代码吗?

php - 使用mysql获取空列的名称

php - Laravel 如何从 3 个表中获取数据

php - 使用 array_map 返回实例化对象数组?

java - 在 Java 中访问对象成员

Javascript:用一个对象 append 脚本,并创建一个本地实例

php - 无法使用 apache 2.2.15 访问 CentOS 6 上的虚拟主机

perl - perl 中的对象类名

java - 将构造函数与 Integer 一起使用