Переход с Kohana 3.2 на Kohana 3.3

Здраствуйте сегодня напишу о том как пришлось помучатся с переходом Kohana версии 3.2 на Kohana версии 3.3
Нормальных доков по переходу я к сожалению не нашел ни в нашем ни в буржуйском интернете.
Есть только список изменений от него я и отталкивался.

Пожалуй самое главное изменение при переходе это то что все имена файлов в папках classes/ должны начинаться с заглавной буквы.
Довольно муторно получается особенно если проект состоит из несколько сотен подобных файлов разбросанных по папкам application/,modules/.
Второе мое злоключение было связано с Git ,системной контроля версий ).
Не знаю что это было глюк или что-то другое ,когда я уже все почти сделал.
Я решил обновить репозиторий на Github’e так вот все мои переименования файлов в верхний регистр исчезли на локальном репозитории. Пользовался кстати TortoiseGit.
Третье — это версия PHP ,на большинстве хостингах стоит версия PHP 5.2 тут же для корректной работы требуется версия PHP 5.3.3 ,правда чтобы работало на PHP 5.2 как я читал требуется внести некоторые изменения ,проще говоря «костыли».

Теперь же дабы облегчить труд всем кто собрался переходить с версии Kohana 3.2 на Kohana 3.3 предложу некоторый формальный план действий:

1) Убедиться что версия PHP на вашем хостинге 5.3.3>= ,иначе ничего у вас не заработает.
2) Скачать дистрибутив версии Kohana 3.3
3) Переименовать все файлы чтобы они начинались с заглавной буквы text -> Text.php а папках
application/classes ,и файлы в своих модулях /modules/classes/ ,также сами названия папок в /classes/ т.е Controller ,Model.
Причем нужно переименовать и вызов моделей в контроллерах к примеру если у вас было:

$user=ORM::Factory('user');
//Нужно переименовать в
$user=ORM::Factory('User');

Еще один нюанс нужно изменить файл конфига database.php
Там где

'type'       => 'mysql'
// нужно так
'type'       => 'MySQL'
'type'       => 'pdo',
// нужно так
'type'       => 'PDO',

иначе вывалиться вот такая ошибочка ErrorException [ Fatal Error ]: Class ‘Database_Mysql’ not found над которой пришлось посидеть )
—Вообщем перенос совершенно рабочего проекта(как нам кажеться) на хостинг чреват геморроем с именами.

*Также можно использовать метод Kohana::auto_load_lowercase() для этого нужно прописать его в bootstrap(я правда разницы не заметил ,без переименования у меня все равно не работало)

spl_autoload_register(array('Kohana', 'auto_load_lowercase'));

4) Перезалить папку /system/ со скаченного дистрибутива ,если вы конечно не правили напрямую в этой папке свои изменения.
5) Перезалить папку /modules/ со скаченного дистрибутива.
6) Обновить файлы index.php и application/bootstrap.php.
7) Переписать некоторые функции. К примеру редирект теперь осуществляться так

HTTP::redirect('редиректим');

** Могут возникнуть также проблемы с работоспособностью некоторых собственных модулей ,таких как Pagination и др.

Подводя итог скажу что переход не будет легким ,придется много потрудиться.
В Kohana 3.3 появилось множество новых функций и методов. Также есть значительное изменение уже существующего функционала.(про них подробнее напишу позже)
Это не может не радовать ,но другой стороны плохо что по Kohana всегда так мало полезных доков ,это огорчает (
Поэтому подумайте стоит ли вам переходить на Kohana 3.3.
Тем более если у вас уже есть рабочий проект на Kohana 3.2 ,работает — не трогай )

P.S Данный пост будет обновляться так как не является полным ,есть слишком много нюансов.
Так же я буду рад если вы в комментариях напишете некоторые полезные инструкции для тех кто решил обновить версию фреймворка.

Гиламов Данис

Приветствую вас уважаемый посетитель! Меня зовут Данис, на страницах дневника я пишу о том что мне интересно: программирование, саморазвитие, спорт, мои размышления, творчество. Надеюсь вы сможете найди для себя полезную информацию, если вы что-то заметили, захотели обсудить, прошу оставлять комментарии в статьях, в Журнале или Написать мне Для меня - это лучшая награда. Спасибо за внимание :)

Вам также может понравиться ...

  • Dev

    Все вроде бы разобрал, но модуль twig не работает,делаю:
    class Controller_System extends Controller_Twig {//}
    Он пишет что не найден данный класс. С сделал именования папок корректным, бесполезно, пробовал разобраться с автозагрузкой классов, — предположил что автолоудер не видит файл с данным классом, но не сумел..
    Подскажите если есть время.

    • Лев

      Class ‘Model_role’ not found

      переименовал все контроллеры и модели, но ведь у меня такой модели и нету почему он мне так пишет? это кстати происходит при регистрации при создании орм прописал с большой буквы все

      • Danis92

        Вы точно все переименовали? Не забыли папку ORM/Model/Auth?

        • Лев

          посмотрел только что там 2 модели Role и User обе в с большой буквы

  • Danis92

    Так не смогу определить в чем проблема ,можете скинуть папку с модулем?

  • Дмитрий

    А я вот сижу до сих пор на 3.2 и врядли в ближайшем будущем перейду на новое. Не вижу явных преимуществ. Тем более, что я отношусь к фреймворку как к библиотеке с набором классов, которые упрощают мне жизнь, а если 3.2 полностью перекрывает мои задачи, то зачем мне создавать себе лишние проблемы?))

    • Danis92

      Для рабочих проектов я тоже не имею смысла переходить. А вот для вновь создаваемых всегда предпочитаю начинать с актуальной на этот момент версией ,так вроде и не отстанешь от новых веяний, да и обновления некоторые бывают довольны полезны и несут в себе улучшение уже имеющегося кода

  • VO

    >>Убедиться что версия PHP на вашем хостинге 5.3.3>= ,иначе ничего у вас не заработает.

    у меня php 5.3.2 и kohana 3.3.0 — всё (auth, database, orm) работает из коробки, хотя в инсталере ругается на версию 🙂

    Так что не паникуйте раньше времени, вначале протестируйте работает ли нужный функционал на целевом сервере. Особенно это касается таких случаев как у меня, когда обновление версии php не доступно.