Я не уверен, что заголовок этого вопроса точен, поэтому, пожалуйста, потерпите меня.
Я создаю легкий MVC-фреймворк. Это работает примерно так:
Main.php (основной класс) вызывает
- Контроллер расширяет Main ($ this-> controller) и
- Модель расширяется Main ($ this-> model)
Теперь модель и класс контроллеров будут вызывать контроллеры и модели в зависимости от URI (например, Blog.php [extends Controller]).
(Итак, для повторения: Main.php вызывает $ this-> model и $ this-> controller. Класс контроллера вызывает Blog extends Controller).
Из Blog.php, как я могу получить доступ к функциям в Controller и функциям в Main?
Я спрашиваю об этом, потому что в Controller мне нужно будет получить доступ к функциям в моем классе URI, но я не могу этого сделать, поскольку PHP говорит мне, что объект не существует, когда я делаю $ this-> uri.
Кажется плохой практикой использовать $ this-> controller, $ this-> model и $ this-> uri в каждом классе.
Мой друг предложил мне использовать магический метод __get (). Это кажется правильным?
class Main
{
function __construct() {
loadClasses();
loadUri();
}
function loadClasses() {
$this->controller = new Controller();
$this->uri = new Uri();
$this->load = new Load();
}
function loadUri() {
//Using the uri, determine what Controller to load.
}
}
class Controller
{
...
}
class Blog extends Controller
{
$this->load->view(); //Should access the view function in the load class
}