Вход • Регистрация

что означает this.diafan

  • 03 октября 2015 г.
  • Подскажите пож-та,что означает this.diafan в контексте php страницы.Никак не пойму ведь в php this это обращение к св-вам и методам ВНУТРИ САМОГО КЛАССА.В документации написано
    Цитата
    Экземпляр класса Init передается во все другие объекты и доступен из любого места системы в виде переменной $this->diafan.
    if(in_array('cart', $this->diafan->installed_modules))
    {
    // модуль «Корзина товаров» установлен и можно к нему обращаться
    }

    Но в примере вызывая this , мы же ведь не находимся внутри какого нибудь класса., или эта самая this в данном случае не имеет никакого отношения к php.Просветите пожалуйста
  • 04 октября 2015 г.
  • Мы как раз таки находимся внутри любого класса Diafan'а, и из любого места можно через $this->diafan получить доступ к другим объектам. Есть глобальная переменная $diafan, которая хранит ссылку на экземпляр класса Init(), но зачем и как можно "выпасть" из класса, что б ее использовать -- не представляю.
  • 04 октября 2015 г.
  • я действительно что-то недопонимаю,доступ к глобальным переменным происходит через массив $GLOBALS,и исходя из моей запутанной логики вызывать переменную $diafan, в которой хранится ссылка на объект Init-а нужно через массив $GLOBALS.
    Допустим если взять стартовый файл index.php,выражение $this->diafan->..... вытаскивает то, что мы запросим.Не могу понять, в каком классе мы тогда находимся, находясь на странице index.php
  • 04 октября 2015 г.
  • Вы же это цитируете: http://www.diafan.ru/dokument/full-manual/developers/architecture/
    Ну? index.php же подключает другие файлы, в частности init.php, который и создает основное поле для работы, внутри которого создается все остальное.
    GLOBALS-то тут при чем? Он в РНР живет своей параллельной жизнью.
  • 04 октября 2015 г.
  • вроде понял, получается в файле index.php мы создаем экземпляр init(), потом start()
    Код

    $diafan = new Init();

    if (file_exists(ABSOLUTE_PATH.'install.php'))
    {
    include ABSOLUTE_PATH.'install.php';
    }
    elseif($_GET["rewrite"] == 'installation')
    {
    header('Location: http://'.getenv("HTTP_HOST").str_replace('installation/', '', getenv("REQUEST_URI")), true, 301);
    }

    define('BASE_PATH', "http://".getenv("HTTP_HOST")."/".(REVATIVE_PATH ? REVATIVE_PATH.'/' : ''));

    $diafan->start();

    Получается до этих строк у нас не сработает такой вызов $this->diafan, а после $diafan->start(), мы уже находимся внутри класса, и продолжаем в нем работать, и мы уже можем вызывать $this->...
    Теперь правильно я понимаю?
    • 06 октября 2015 г.
    • index.php вообще к правке не предназначен. Если Вы в итоге именно такой вывод сделали, то да, всё правильно

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум