За последние 24 часа нас посетили 193254 программиста и 1976 роботов. Сейчас ищут 2022 программиста ...

Вопрос по ООП

Тема в разделе "PHP для новичков", создана пользователем bxN5, 6 июн 2010.

  1. bxN5

    bxN5 Активный пользователь

    С нами с:
    15 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    В начале скрипта index.php определяются некоторые значения переменных(язык) и идет объявление некоторых обьектов в частности обьекта (шаблонизатора и его настройки)
    Далее в зависимости от гет данных я подгружаю определенный модуль сайта (класс/метод). В связи с этим вопрос:
    Если в этом классе который я подгрузил (мод сайта),а точнее в методе этого класса, я хочу вызвать какую то tpl шаблонизатора, мне приходится там создавать новый обьект класса ($tpl = new Quicky;) причем с новыми настройками(язык т.п) которые я не знаю как получить с моего index.php, а если не обьявлять обьект класса шаблонизатора получаю ошибку. Подскажите как правильно нужно сделать?
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    можно сделать синглтон и получать объект шаблонизатора через $tpl = Quicky::getInstance();
     
  3. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    завести глобальную переменную
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Можно передавать шаблон в метод.
    Или использовать паттерн реестр.
    Про синглтон уже сказали.
     
  5. bxN5

    bxN5 Активный пользователь

    С нами с:
    15 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Вообщем добавил я в класс шаблонизатора метод
    static function getInstance()
    {
    if (self::$instance == NULL)
    {
    self::$instance = new Quicky();
    }
    return self::$instance;
    }
    в начале index.php
    $tpl = new Quicky;
    $Options->setlang($addr); // Устанавливаем язык
    $langfile=$Options->addr; // формируем путь
    $tpl->config_load($langfile); // загружаем в шаблонизатор
    теперь допустим возьмем класс(мод сайта) регистрации (index.php?mod=reg&act=стандарноедействие) (mod - класс act- метод)
    сюда мне нужно передать язык:
    пробовал и так
    $Options= Options::getInstance();
    $tpl = Quicky::getInstance();
    $langfile=$Options->addr; (в index.php получает язык корректно)
    $tpl->config_load($langfile);
    и просто вывести в надежде на то что он сохранит
    $tpl = Quicky::getInstance();
    $tpl->display($showtpl);
    но вот он никак передавать язык не хочет, не передается вот это $Options->setlang($addr); а значение $addr в моде я уже получить не могу