Есть ли способ помещения переменных в контроллер из расширенного каркасного класса? - PullRequest
0 голосов
/ 23 января 2011

привет, я все еще изучаю mvc, делая его, и сегодня я понимаю, что мне не хватает того, как все работает.

class Framework
{

    function __construct()
    {
        require 'libraries/language/l.php';
        /*
        $l['hello'] = 'hello';
        $l['helloworld'] = 'helloworld';
        etc
        */
    }
}

class Controller extends Framework
{

    function index()
    {
        #missing ?
        echo $l;
    }
}

хорошо, первый вопрос: как я могу echo $l с моего контроллера?файлы?Есть ли способ сделать это?

изменить * то же самое для этого.

function library( $lib ){

    if (file_exists('libraries/lib.'. $lib .'.php')) {
        require 'libraries/lib.'. $lib .'.php';

        if (class_exists($lib)) {
            $class = ucfirst($lib);
            $$lib = new $class;
            return TRUE;
        }

        if (!class_exists($lib)) {
            return FALSE;
        }
    }
}

спасибо за просмотр.

Адам Рамадхан

Ответы [ 2 ]

1 голос
/ 23 января 2011

Ну, это означает, что для каждого экземпляра контроллера вы будете хранить внутри него большой массив.

На самом деле, вы можете создать синглтон-класс , обеспечивающий перевод текста:

class Language
{
    private static $instance;
    public $l = array();

    private function __construct() {
        require 'libraries/language/l.php';
        $this->l = $l;
    }

    public static function getInstance() {
        if (!isset(self::$instance)) {
            $c = __CLASS__;
            self::$instance = new $c;
        }
        return self::$instance;
    }
}

И у вас может быть сокращенная функция для него:

function l($text) {
    return Language::getInstance()->l[$text];
}

А затем используйте его:

echo l('hello') . "\n";
1 голос
/ 23 января 2011

Передача данных через свойства объекта, защищенные:

class Framework
{
    protected $l = array();

    function __construct()
    {
        require 'libraries/language/l.php';

        $this->l['hello'] = 'hello';
        $this->l['helloworld'] = 'helloworld';
    }
}

class Controller extends Framework
{

    function index()
    {
        echo $this->l['hello'];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...