【问题标题】:Only instantiate class from within itself仅从自身内部实例化类
【发布时间】:2016-06-11 20:27:04
【问题描述】:

我正在寻找一种可以在类中调用静态方法的方法,该方法将创建自身的实例。我想要它,所以不可能在自身之外实例化类。我已经尝试过了,但我收到一条错误消息,提示 无法实例化抽象类(我认为会发生这种情况)。

abstract class Test {

    public function __construct($item){

    }

    public static function from($item){
        return new Test($item);
    }

    public function testFunc(){
        // Do some stuff
        return $this;
    }

}

它的用法如下所示:

// Valid
Test::from($myItem)->testFunc();

// Invalid
(new Test($myItem))->testFunc();

有没有办法做这样的事情?

【问题讨论】:

标签: php


【解决方案1】:

您需要将构造函数设为私有,然后返回实例。像这样:

class Test {

    private function __construct($item){

    }

    public static function from($item){
        return new static($item);
    }

}

现在您只能像这样创建新实例:

$new_object = Test::from('something');

【讨论】:

  • 这看起来可以!
猜你喜欢
  • 1970-01-01
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多