Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2014, 18:44   #1
serrgggeee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 65
По умолчанию класс джумлы JFactory::getApplication('site')

Всем привет я немного запутался и хочу что бы мен объяснили правильно ли я мыслю. Есть класс JFactory который имеет метод getApplication вот как он вызывается в index.php JFactory::getApplication('site') не буду писать весь код сразу тоесть все наследование а начну с начала. При вызове указывается слова site JFactory::getApplication('site') я иду и смотрю что же представляет собой это метод
PHP код:
public static function getApplication($id null$config = array(), $prefix 'J')
    {
        if (!
self::$application)
        {
            if (!
$id)
            {
                
JError::raiseError(500'Application Instantiation Error');
            }

            
self::$application JApplication::getInstance($id$config$prefix);
        }

        return 
self::$application;
    } 
вроде ооп php мне понятно но вот сразу не ясно куда же относится слово site $id или $config?
serrgggeee вне форума Ответить с цитированием
Старый 28.05.2014, 19:13   #2
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Цитата:
Сообщение от serrgggeee Посмотреть сообщение
Всем привет я немного запутался и хочу что бы мен объяснили правильно ли я мыслю. Есть класс JFactory который имеет метод getApplication вот как он вызывается в index.php JFactory::getApplication('site') не буду писать весь код сразу тоесть все наследование а начну с начала. При вызове указывается слова site JFactory::getApplication('site') я иду и смотрю что же представляет собой это метод
PHP код:
public static function getApplication($id null$config = array(), $prefix 'J')
    {
        if (!
self::$application)
        {
            if (!
$id)
            {
                
JError::raiseError(500'Application Instantiation Error');
            }

            
self::$application JApplication::getInstance($id$config$prefix);
        }

        return 
self::$application;
    } 
вроде ооп php мне понятно но вот сразу не ясно куда же относится слово site $id или $config?
$id конечно.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 28.05.2014, 19:23   #3
serrgggeee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 65
По умолчанию

ну тогда дальше if (!self::$application) то выполняется условие но судя из этого то public static $application = null; то оно не выполняется?
serrgggeee вне форума Ответить с цитированием
Старый 28.05.2014, 21:56   #4
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Цитата:
Сообщение от serrgggeee Посмотреть сообщение
ну тогда дальше if (!self::$application) то выполняется условие но судя из этого то public static $application = null; то оно не выполняется?
Здесь идет проверка не создан ли экземпляр обьекта приложения (т.е. главного класса). Если создан то возвращаем обьект (т.е не null). А если не создан то создаем и возвращаем.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 28.05.2014, 22:08   #5
serrgggeee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 65
По умолчанию

ну тогда получается противоречие так как он по любому null так как еще не создан и условие будет выполнено так зачем же нужно это условие если исход только один?
serrgggeee вне форума Ответить с цитированием
Старый 28.05.2014, 22:20   #6
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

А Вы уверены что это так?! А если где-то ещё такой же вызов произойдет то создаться новый экземпляр.
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 28.05.2014, 22:53   #7
serrgggeee
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 65
По умолчанию

ну насколько я понимаю после того как закрывается страница или открывается новая то объект уничтожается, как же тогда создастся новый объект?
serrgggeee вне форума Ответить с цитированием
Старый 28.05.2014, 23:41   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от serrgggeee Посмотреть сообщение
ну насколько я понимаю после того как закрывается страница или открывается новая то объект уничтожается, как же тогда создастся новый объект?
чтоб дважды в одном скрипте не создали.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.05.2014, 07:54   #9
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Это защита от дураков. Ничего же не мешает самому написать где-нибудь ещё один вызов этой функции.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сайт витрина на вордпрессе? Перенос с джумлы на вордпресс pocomaxa7 Помощь студентам 0 12.11.2013 23:20
проблемы с переносом сайта джумлы на сервер Вернер WordPress и другие CMS 0 12.02.2013 23:48
шаблон Джумлы VT_Game ГОСЕАН WordPress и другие CMS 0 28.02.2012 08:54