Ребят нужна ваша помощь что я пытаюсь сделать:
В index.php подключаю autoloader
Далее регистрирую классы
require_once(ROOT . '/system/engine/registry.php');
require_once(ROOT . '/system/engine/loader.php');
require_once(ROOT . '/system/engine/controller.php');
$registry = new Registry();
$loader = new Loader($registry);
$registry->set('load', $loader);
Затем регистрирую класс Mail:
Ну и получаю ошибку:
Я понимаю что в Controller скорее всего нужно передать данные $register но как это сделать пока не могу догадаться...
В index.php подключаю autoloader
Далее регистрирую классы
require_once(ROOT . '/system/engine/registry.php');
PHP:
<?php
final class Registry {
private $data = array();
public function get($key) {
return (isset($this->data[$key]) ? $this->data[$key] : null);
}
public function set($key, $value) {
$this->data[$key] = $value;
}
public function has($key) {
return isset($this->data[$key]);
}
}
PHP:
<?php
final class Loader {
public function view($template) {
$file = ROOT . $template;
if (file_exists($file)) {
require($file);
} else {
trigger_error('Error: Could not load template ' . $file . '!');
exit();
}
}
}
PHP:
<?php
abstract class Controller {
protected $registry;
public function __construct($registry) {
$this->registry = $registry;
}
public function __get($key) {
return $this->registry->get($key);
}
public function __set($key, $value) {
$this->registry->set($key, $value);
}
}
$loader = new Loader($registry);
$registry->set('load', $loader);
Затем регистрирую класс Mail:
PHP:
class Mail extends Controller{
public function actionIndex()
{
$this->load->view('/templates/views/Mail.php');
}
}
PHP:
Warning: Missing argument 1 for Controller::__construct(), called in /var/www/u0157199/data/www/vinstrok.ru/system/Router.php on line 44 and defined in /var/www/u0157199/data/www/vinstrok.ru/system/engine/controller.php on line 5
Notice: Undefined variable: registry in /var/www/u0157199/data/www/vinstrok.ru/system/engine/controller.php on line 6
Fatal error: Call to a member function get() on null in /var/www/u0157199/data/www/vinstrok.ru/system/engine/controller.php on line 10
- Автор этого поста
- Получает вознаграждение за каждую симпатию к этому посту.