protected $view_folder, то его видимость пропадает как в потомке, так и в вызове функции render() родителя(хотя казалось бы, функция класса родителя и там это свойство само по себе должно быть видимо). Но оно становится NULL. При этом после окончания создания класса потомка и вызова его функции это свойство опять становится видимым
К методу родителя спокойно обращаюсь.
Как только объявил его как static, то всё заработало.
Почему так? Не могу понять. Извиняюсь за сумбурность объяснения, но вот так оно у меня в голове сейчас.
Ниже привожу код класса родителя Application и класса потомка Profile.
Application.php
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- class Application
- {
- public $controller;
- public $action;
- static protected $view_folder;
- public function start()
- {
- $uri = self::getRoute();
- $router = new Router($uri);
- $this->construct($router);
- return true;
- }
- private static function getRoute(){
- return $_SERVER['REQUEST_URI'];
- }
- private function construct($router)
- {
- $router->routing['function'] = 'index';
- }
- $class = $router->routing['class'];
- $function = $router->routing['function'];
- self::$view_folder = $class;
- $controller = new $class($class);
- $controller->$function();
- /* ЗДЕСЬ СВОЙСТВО ОПЯТЬ ВИДИМОЕ, А В САМОМ КЛАССЕ - НЕТ(если оно не static) */
- return true;
- }
- /* ЭТА ФУНКЦИЯ ВЫЗЫВАЕТСЯ ИЗ ПОТОМКА И СВОЙСТВО ЗДЕСЬ НЕ ВИДНО(если оно не static) */
- protected function render($view, $params = null)
- {
- echo "<br>Called from child class<br>";
- echo self::$view_folder . "<br>";
- echo $view;
- }
- }