Я считаю создание и загрузку объектов CodeIgniter очень ограниченными. Я хочу полный контроль над моим кодом и немного магии на заднем плане. Вместо этого я начал использовать Doctrine's Class Loader . Это очень легкий и по сути SPL автозагрузчик (также хорошая альтернатива). Вам не нужен весь Shebang Doctrine с ORM и всем этим, только ClassLoader. Есть некоторая конфигурация, чтобы разобраться в этом, но она творит чудеса.
С PHP 5.3 у меня теперь есть классы пространства имен в каталоге Application. Например, я создал новый класс в каталоге Tests: Application \ Tests \ SomeTest.php
Этот тест может выглядеть примерно так:
namespace Tests;
class SomeTest {
...
}
Я бы использовал этот класс в своем коде (контроллеры, представления, помощники), просто используя полностью определенное пространство имен (например, $test = new \Tests\SomeTest
) или оператор "use" в верхней части моего кода (use \Tests\SomeTest as SomeTest
).
Таким образом, я намереваюсь заменить все библиотеки и модели вариантами пространства имен OO. В этом есть много преимуществ: быстрая автозагрузка с SPL, полная поддержка IntelliSense IDE для классов / методов (CodeIgniter действительно плох для этого), ваш код более переносим для других сред или проектов.
Тем не менее, я до сих пор много использую движок CodeIgniter. Это в основном означает, что у меня есть $CI =& get_instance()
в большинстве моих классов. Это все еще в стадии разработки, и я думаю, что основная причина, по которой мне нужен CI, - это доступ к базе данных. Если я смогу это учесть ... и использовать что-то вроде Dependency Injection, то мне вообще не понадобится CodeIgniter в моих классах. Я просто буду использовать его для MVC-фреймворка и иногда использовать его методы в моих контроллерах.
Я знаю, что это выходит за рамки вашего вопроса, но, надеюсь, это хоть какая-то пища - и это помогает мне получить это и в письменной форме.