У меня простой вопрос. Я использую синглтон, который реализует абстрактный класс. Можно ли поместить метод getInstance () и переменную $ _instance в абстрактный класс вместо конкретного, который я хочу создать?
Вот мой код:
<?php
class Command_Log extends Command_Abstract {
private static $_instance=null;
public static function getInstance() {
if (self::$_instance==null)
self::$_instance=new self();
return self::$_instance;
}
protected function realExecute() {
}
protected function realSimulate($fileHandle) {
}
}
и
<?php
abstract class Command_Abstract implements Command_Interface {
protected $_data=array();
//private static $_instance=null;
protected $_isExecuted=false;
protected $_execute=false;
public function enableExecute() {
$this->_execute=true;
return $this;
}
protected function __construct() {
}
protected function __clone() {}
public function addData($data) {
array_push($this->_data,$data);
return $this;
}
abstract protected function realExecute();
abstract protected function realSimulate($fileHandle);
public function execute() {
if(!$this->_isExecuted && $this->_execute) {
$this->_isExecuted = true;
$this->realExecute();
}
}
public function simulate() {
$exitSystem = false;
if(!$this->_isExecuted && $this->_execute) {
$this->_isExecuted = true;
$exitSystem = $this->realSimulate($fh);
}
}
return $exitSystem;
}
}
У меня много реализаций команд, поэтому я не хочу, чтобы в моих реализациях везде был избыточный код. Можно ли поместить эти две вещи в абстрактный класс, если да, скажите, пожалуйста, как.
Если нет, пожалуйста, объясните мне, почему это невозможно. Или, во всяком случае, если мне нужно что-то изменить, чтобы это сделать.
С уважением