Преход на рамката на Kohana от php 5
В исторически план jeka.by е написан на рамкатаkohana 3.2 и използва, както всичко по онова време, php 5 (независимо дали php 5.2 или 5.3).
2017 г. е, което означава, че е крайно време да преминете към php 7.
Тук ще напиша какви промени трябваше да направя в кода на проекта.
1. Актуализирах Kohana до последната стабилна версия 3.3.0.
a) Всички модули са заменени с нови. И също така замени системната папка. Преименувах някои от моите папки и ги препратих към index.php, bootstap.php, така че директориите и имената на класовете да започват с главна буква вместо с малка, пример:
b) Премахнат метод в kohana 3.3:
вместо него, трябва да регистрирате пренасочване навсякъде във формата:
2. PHP 7 най-накрая премахна поддръжката за разширението mysql (трябва да използвате mysqli или pdo). В същото време драйверът на kohana mysqli все още не се е появил официално!
Следователно трябва да намерим и свържем модула mysqli за kohana. Взех модула от github https://github.com/tomlankhorst/kohana-3.3-mysqli.
Включих модула както обикновено вapplication/bootstrap.php в масива Kohana::modules:
Трябва също да промените типа адаптер вapplication/config/database.php от MySQL на MySQLi.
3. Един ред номер 121 във файла modules/pagination/classes/Kohana/Pagination.php трябва да се актуализира, за да съответства на синтаксиса на php 7, като се добавят фигурни скоби: $config_file-> :
В противен случай ще има грешка ErrorException [Notice]: Преобразуване на масив в низ в класа Pagination:

4. Следната грешка ще възникне само в kohana, ако използвате разширението Memcache.
PHP разширението Memcache не е заредено
Грешката възниква, защото това разширение не е пуснато от разработчиците подСедмата версия на php (можете да опитате да я изградите с дръжки, но не е предоставен готов пакет).
Като алтернатива сега ще използваме memcached. Съответно трябва да намерите и изтеглите модула memcached за kohana. Взех този модул от github - https://github.com/gimpe/kohana-memcached
В допълнение към включването на модула в bootstrap.php, не забравяйте да промените драйвера в конфигурациятаapplication/config/cache.php от memcache на memcached.

Грешката не е в ядрото на kohana, а в 3rdparty. Възниква грешка (предупреждение) във функцията returnBytes:
Това се случва, когато се опитаме в php 7.1 (в php 7.0 всичко е наред!) да умножим низ по число:
Решението е да вмъкнете преобразуване към цяло число преди конструкцията за превключване:
Предупреждавайте за невалидни низове в аритметиката
при извършване на аритметични операции с невалидни низове ще има предупреждение с текст "Предупреждение за невалидни низове в аритметиката". В зависимост от нивото на настройките може да бъде хвърлено изключение.
6. Следната грешка може да възникне в неочакван момент, когато нещо се обърка.
ErrorException [ Фатална грешка ]: Uncaught TypeError: Аргумент 1, предаден на Kohana_Kohana_Exception::handler() трябва да бъде екземпляр на Exception, даден екземпляр на Error
Грешката в php 7 kohana се дължи на промени в механизма за обработка на грешки в php 7.