Мне очень сложно дается изучение сторонних кодов, в данном случае framework Yii. В данный момент изучаю Yii (это первый php-шный фреймворк, который я изучаю). Основные принципы понятны, как работать тоже понятно, но только в рамках тех общих мануалов, которые даются в различных руководствах (например, учебный проект «создание блога»). Что такое контроллер, модель, представление, как они взаимодействуют и т.д. Запросы к БД, выводы списков, валидация и т.д. Все это можно довольно просто применять на готовом каркасе приложения (который создается после установки фреймворка), создавать разделы, выводить в них инфу из бд и т.д. И если мне, скажем, нужно создать простой сайт с несколькими страничками, то все ясно, делай хоть щас. Если проект уже более сложный, когда тебе нужны другие принципы маршрутизации по сайту (скажем URL-ы по структуре, отличные от схемы /контроллер/действие) или если нужно создать свою админскую панель, свои разделы сайта с более специфическим положением, нежели это дается в руководствах, то тут проблема.
И проблему я вижу в непонимании более глубоких принципов функционирования фреймворка. Да, есть отличная схема, которая показывает цикл жизни приложения (входной скрипт запускает приложение, приложение делает то, то и се, вызывает контроллер, тот в свою очередь вызывает другой и т.д. – все это общие понятия). Мне необходимо более подробно разобраться в архитектуре, чтобы понимать принцип его работы, связи между всеми его элементами, кто кого и зачем вызывает и т.д. Практически построчно разобрать ход выполнения приложения, начиная с файла index.php. Скажем, я дошел до строки Yii::createWebApplication($configFile)->run();, далее нашел класс YiiBase, который содержит эту функцию и т.д. На YiiBase я уже и стопорнулся, т.к. не разобрался где и как создается CWebApplication и все остальную разветвленную цепочку вызовов функций/классов/объектов и т.д, которые в итоге генерируют страничку и выводят в нее результат.
Или, например, есть функции проверки валидности. Есть руководство, которое говорит как нам пользоваться этими функциями. …Передаем в нее такой-то параметр, другой, передаем массив с правилами валидации, вызываем ее тут и все работает. Но КАК это работает, КАК это взаимодействует с остальным приложением – непонятно. Если мой сумасшедший клиент хочет чтобы я проверял ввод телефона на наличии только цифр, НО 13-го числа каждого месяца в правило валидности телефона включалось бы условие, что нельзя вводить цифру «6», а при вводе в этой самой цифры «6» на экране вместо формы появлялась бы веселая рожица… Я привел этот нелепый и бредовый пример (который сочинил прямо по ходу написания текста), чтобы показать, что иногда не только нужно знать, что делает функция, где ее нужно вызывать и какие параметры передавать, но еще и ПРИНЦИП ее работы, и ее место в архитектуре приложения, как она взаимодействует со всем остальным приложением.
Мне нужен человек, кто на пальцах объяснил бы принципы работы приложения, что как выполняется, кого вызывает, для чего и т.д. Может быть в каких-то моментах мне не хватает знаний ООП (хотя перед изучением фреймворка я капитально засел за то чтобы еще раз освежить в памяти все это) и я не могу в голове уложить все логические цепочки, которые присутствуют работе фреймворка.
Мне нужно понимание того как index.php создается приложение, где и как разбирается URL, как на основе этого URL-а вызывается нужный контроллер и т.д.
Если бы кто-то (НЕ БЕСПЛАТНО) написал бы мне это в виде статейки, с вставками кодов, с примерами и т.д. – я был бы очень признателен. Естественно, с возможностью с моей стороны задавать вопросы.