Когда я только начал читать, я даже усомнился в своих способностях к пониманию и обучению.
Вспомни вопросы, которые у тебя появились, давай обсуждать.
Начало там простое -
http://www.yiiframework.com/tour/,
Основные принципы размещения файлов и разделения кода всем знакомы, классика MVC - единой точка входа, контроллер, action.
Принцип именования классов понятен.
Несколько определений они "забыли" написать в доке, или написали так, что черт ногу сломит:
* По дефолту приложение размещено в папке htdocs/protected. Привязки нет, достаточно в точке входа поменять путь.
$config=__DIR__.'/protected/config/main.php'; -> '../application/config/main.php';
* контроллер по умолчанию называется SiteController.php
* вместо путей к файлам надо писать алиасы:
не include(APP_DIR.'/lib/class.php'), а Yii::import('application.lib.class'), где application - алиас на папку, точка - вместо "/", lib - папка в каталоге приложения, а к последнему слову прибавляется .php и считается именем файла
* автолоад находит файл класса модели по имени файла: MyForm -> models/MyForm.php, а для контроллера нужен суффикс: UserController -> Controllers/UserController.php
* для классов, названных по-своему, можно задать карту в точке входа: Yii::$classMap=array('ClassName1' => 'path/to/file.php',);
или сделать "импорт пакета" где угодно - Yii::import('application.mylib.*')
Я долго пытался понять значение понятия "Компонент", которое используется в каждом абзаце доки.
В общем, есть базовый класс CComponent, который расширяют все классы, которые используются в программе - контроллеры, модели, DAO, хелперы и т.п.
В CComponent прописана магия и колбеки, через которые можно делать mixin любого объекта yii.
Говоря по-русски, фреймворк создает свои объекты до вызова нашего кода, и при желании можно добавить свои методы и поля в эти объекты, не меняя фреймворк.
Вообще, можно в конкретном месте изменить работу любого наследника CComponent, не меняя существующий код.
Насколько быстро это работает и как потом поддерживать эти маленькие неожиданности - хез.
Yii надо править. Например, вся валидация, даже на numeric, делается регулярками.
Мне это кажется чреватым сегфолтами.
Что мне интересно - это интеграция с QuickForms, насколько легко заменить их построитель/валидатор форм своим.