Создание простого PHP MVC - Каков наилучший способ предоставления глобальных переменных представлению? - PullRequest
0 голосов
/ 16 декабря 2010

Я собрал минимальный MVC для PHP, вдохновленный Pylons. Мои контроллеры выглядят так:

<?php
defined('__CORE__') or die('no direct access');

class Demo extends BaseController
{
    public function hello($args)
    {
        return parent::render('hello_tmpl', array('foo' => 'bar'));
    }
}

?>

<?php
defined('__CORE__') or die('no direct access');

class BaseController
{
    public function render($template, $vars=FALSE)
    {
        // Load up some global variables to put into the template's scope
        global $map;

        if ($vars !== FALSE)
            extract($vars);

        // Load up the template file's contents and save to the $_body variable
        // This variable will be utilized in base.html
        ob_start();
        include VIEW . '/' . $template . '.phtml';

        $_body = ob_get_contents();
        ob_end_clean();

        require_once(VIEW . '/base.php');
    }
}

?>

У меня возникли проблемы с предложением хорошего способа представления глобальных переменных в представлении. $map - сопоставитель маршрутов, определенный в другом файле. Я бы хотел, чтобы это было открыто для View и Controllers, чтобы я мог использовать $map->url_for('home_page').

Какой изящный способ сделать это? В идеале я хотел бы, чтобы это происходило в BaseController, чтобы я мог сделать что-то вроде:

public function hellp($args)
{
    $home_page = parent::$map->url_for();
}

А также доступ к $map из представления.

1 Ответ

0 голосов
/ 16 декабря 2010

Вот учебник, который я сейчас читаю: http://www.devshed.com/c/a/PHP/PHP-Rendering-Web-Pages-Using-the-Composite-View-Design-Pattern/

Это часть серии статей, я думаю, что это всего лишь 4-5 статей. Вы можете погуглить это. Я думаю, что это может помочь.

edit: Извините, я бросил пистолет туда с буферным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...