возможно, уже поздно или что-то в этом роде, но меня это бесит. По сути, я пишу фреймворк для упражнения, пытаясь развить свои навыки, но я вроде застрял. Я думаю, что я, может быть, попал в новичка, о котором я просто не знаю :)
Итак, у меня есть класс начальной загрузки, который инициализирует всю программу. Я создаю контроллер, в котором вы можете вызвать приложение (или модель, если хотите). Все контроллеры и приложения являются подклассами класса инициализации, который реализует шаблон синглтона. Это потому, что я хотел бы использовать функцию конструкции для других вещей инициализации, основанных на данном контроллере / приложении.
Теперь проблема в том, что, когда я пытаюсь запустить приложение из контроллера, экземпляр var уже настроен на объект контроллера (который я считал нулевым). Если я не достаточно ясен, вот код в очень упрощенной и простой форме:
<?php
final class Bootstrap {
public function __construct() {
$controller = Controller::init();
$controller->index();
}
}
abstract class Initialization {
private static $_instance = NULL;
final public static function init() {
$c = get_called_class();
var_dump(self::$_instance);
self::$_instance = new $c();
return self::$_instance;
}
final protected function app($app) {
$app::init();
}
}
final class Form extends Initialization { }
final class Controller extends Initialization {
final public function Index() {
$this->app('form');
}
}
$bootstrap = new Bootstrap();
?>
Выход
null
object(Controller)[2]
Я в замешательстве, почему экземпляр уже установлен в приложении формы? Я думал, что он унаследовал это "собственный" статический экземпляр var ??