Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Разбор базвых классов и методом или как устроен Framework http://forum.kohanaframework.su/viewtopic.php?f=32&t=658 |
Страница 1 из 1 |
Автор: | nkl [ 28 май 2013, 14:41 ] |
Заголовок сообщения: | Разбор базвых классов и методом или как устроен Framework |
Поскольку я хочу смотреть именно в корень проблемы, а не быть "хомячком", которому показали несколько кнопок для получения результата и тот давит на них, я решил завести эту тему. Признаться уже не раз я пытался начать разбирать фреймвор по кирпичикам и понять как он устроен, но уже через несколько уровней наследования начинал путаться и забрасывал это гиблое дело. Итак начнем. Начать я хочу с этого уже заезженного модуля Database. Но до того как начать с модуля хочу разобраться, как он вообще подключается. Если я где-то ошибусь, поправьте меня. Начинается все это с файла index.php Код:
Непонятки начинаются уже со след. строк: Код:
Что я тут вижу: объявляется константа с именем DOCROOT в которую пишется следующее: Из константы __FILE__ берется путь до директории (функция dirname()) в которой лежит файл index.php, потом полученная строка пропускается через realpath(), я так понял это для тех случаев, когда папка www находиться в нестандартном месте, а в папке /var указана символическая ссылка на эту папку. Описание функции realpath взял отсюда. Потом к полученной строке дописывается т.н. DIRECTORY_SEPARATOR. Это предопределенная константа, которая определяет какой слеш используется файловой системой для разделения узлов в адресе файла (в linux это / а в windows это уже обратный \). Вроде с этой строкой все понятно. Если я в чем то соврал, поправьте. Далее идут строки: Код:
В которых проверяются значения указанные в переменных выше и если значение записанное в них формирует путь до папки, а не до файла или еще до чего нить, то к этим переменным добавляется префикс состоящий из канонизированного абсолютного пути к папке, в которой лежит Кохана. Потом идут эти строки: Код:
В первых трех устанавливаются константы в которых записываются канонизированные абсолютные пути к папкам application, modules и system. Вот тут у меня возникает вопрос: а зачем еще раз realpath'ом преобразовывать строку?. Последняя строка уничтожает конфигурационные переменные. Потом проверяется наличие файла install.php Код:
У меня вопрос по условию. Вернее не по условию, а по функции file_exists(). В каких каталогах она ищет файл install.php? Смею предположить, что поиск происходит в области видимости файловой системы php-интерпретатором. Если не так, опять же, поправьте. Далее идут строки: Код:
В которых определяется константа KOHANA_START_TIME в которую пишется непонятно что. Честно говоря, прочитал описание этой функции и на php.su и на php.net но так и не понял что она возвращает. Тем более, что эта функция доступна только на системах, в которых есть системная функция gettimeofday(). В Windows она вообще будет работать? На моем минте она возвращает примерно след. значение: Цитата: 1369733373.4979 Для чего эта константа? И будет ли она объявлена, если похапе работает на Windows IIS? Далее идут строки: Код:
Из комментария я понял, что в эту константу записывается объем оперативной памяти в байтах выделенный php-скрипту на данный момент времени. Т.е. все что объявляется после в этой переменой никак не отражено. Кажется теперь я понимаю для чего объявлять KOHANA_START_TIME и KOHANA_START_MEMORY. С помощью этих констант можно отслеживать производительность кода, время исполнения, используемые ресурсы и т.д. (опять же, если я не прав, поправьте). Далее идет включение файла bootstap.php: Код:
Сейчас как разберусь что значит этот кусок, дополню топик. |
Автор: | Ke1eth [ 31 май 2013, 13:27 ] |
Заголовок сообщения: | Re: Разбор базвых классов и методом или как устроен Framewor |
nkl писал(а): Код:
Вот тут у меня возникает вопрос: а зачем еще раз realpath'ом преобразовывать строку? Потому, что эти объявления: Код:
могут быть например такими: Код:
для того чтобы не складывать по кучи раз сам фреймворк и модули - если есть несколько приложений использующих его, ну и для безболезненного обновления самого фреймворка. nkl писал(а): У меня вопрос по условию. Вернее не по условию, а по функции file_exists(). Проверяет наличие файла в той-же директории, что и сам файл index.php (на лицо белые пятна в основах php). Цитата: В которых определяется константа KOHANA_START_TIME в которую пишется непонятно что. Вполне понятно, что пишется время "начала выполнения скрипта", используется для профайлера. Сам профайлер можешь посмотреть добавив в главный шаблон вывод оного: Код:
Судя по постам, рекомендовал бы подтянуть знания по php. |
Автор: | nkl [ 04 июн 2013, 10:11 ] |
Заголовок сообщения: | Re: Разбор базвых классов и методом или как устроен Framewor |
Цитата: Проверяет наличие файла в той-же директории, что и сам файл index.php (на лицо белые пятна в основах php). Ведь искал же описание функции и так ничего и не нашел. Спасибо. По поводу пробелов в знании php, все приходит с опытом, подтягиваю как могу. |
Автор: | WinterSilence [ 04 июн 2013, 13:49 ] |
Заголовок сообщения: | Re: Разбор базвых классов и методом или как устроен Framewor |
nkl> http://www.php.net/download-docs.php я так полагаю данным справочником ты не пользуешься |
Автор: | slider23 [ 04 июн 2013, 15:40 ] |
Заголовок сообщения: | Re: Разбор базвых классов и методом или как устроен Framewor |
Разбирать любой фреймворк начиная с index.php - бесполезно. Ибо на нем же и закончишь. Разбирай классы фреймворка, которые тебе приходится расширять при написании приложения. |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |