Я ищу способ, которым можно вызвать статический метод в классе, который создаст экземпляр самого себя. Я бы хотел, чтобы это невозможно было создать экземпляр класса вне себя. Я пробовал это, но я получаю сообщение об ошибке Невозможно создать экземпляр класса (что я предположил, что это произойдет).Только экземпляр класса изнутри
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();
Есть ли способ сделать что-то вроде этого?
кажется, что вы пытаясь реализовать Singleton для этого класса, так это? –
Создайте конструктор 'private', а не класс' abstract'. – Marvin
Подробнее о [singleton class] (http://www.phptherightway.com/pages/Design-Patterns.html) шаблон дизайна –