такой подход имеет один большой минус а именно дублирование кода — представьте себе ситуацию у вас есть сайт с 4-5 языками и в один момент нужно изменить ну скажем нумерованные списки в шаблоне на не нумерованные и получается что изменения нужно производить в 4-5 файлах вместо одного.
кстати если вы контроллер расширяете только для загрузки языка, то на мой взгляд, логичнее будет это дело запихнуть в библиотеку и вызывать в автолоуде.
Если не ошибаюсь то «Concepts, Techniques, and Models in Computer Programming» — это 2 курс в MIT, а первый — это «Structure and Interpretation of Computer Programs».
ИМХО в статьях подобного типа не стоит максимально сокрощать код, потому как читаемость сразу падает.
и ещё ИМХО — нисподающий switch в реальных проектах — затрудняет отладку.
на сколько по вашему код
switch($lang):
case 'en':
$this->lang->load('main', 'english');
break;
case 'ru':
$this->lang->load('main', 'russian');
break;
default:
$this->lang->load('main', 'english');
break;
endswitch;
отличается от:
switch($lang):
case 'en':
include_once('/lang/main_english.php');
break;
case 'ru':
include_once('/lang/main_russian.php');
break;
default:
include_once('/lang/main_english.php');
break;
endswitch;
на мой взгляд практически ни чем.
Если ошибся, то сильно не пинайте ))