Меняем версию ядра Laravel налету
Laravel – динамично развивающийся фреймворк. Новые версии выходят часто. Как проверить работоспобность новой версии на боевом сайте? У меня есть сразу три элегантных решения.
Чтобы лучше понять суть решения, заглянем в path.php
. В этом файле происходит определение местоположения всех каталогов фреймворка
// -------------------------------------------------------------- // The path to the application directory. // -------------------------------------------------------------- $paths['app'] = 'application'; // -------------------------------------------------------------- // The path to the Laravel directory. // -------------------------------------------------------------- $paths['sys'] = 'laravel'; // -------------------------------------------------------------- // The path to the bundles directory. // -------------------------------------------------------------- $paths['bundle'] = 'bundles'; // -------------------------------------------------------------- // The path to the storage directory. // -------------------------------------------------------------- $paths['storage'] = 'storage'; // -------------------------------------------------------------- // The path to the public directory. // -------------------------------------------------------------- $paths['public'] = 'public'; |
Соответственно, в каталоге laravel
находится ядро фреймворка.
Суть идеи
Для каждой версии фреймворка создаем отдельный каталог.
Например, помимо laravel
я создал:
lara323
lara326
lara327
lara328
Модифицируем файл paths.php. Добавим проверку секретного GET параметра:
if (isset ($_GET['my_secret_key'])) $sys = $_GET['my_secret_key']; else $sys = 'laravel'; $paths['sys'] = $sys; |
Теперь на любой странице вашего проекта можно добавить GET-параметр
и сменить версию laravel налету:
http://mysite.local/blog/show/?my_secret_key=lara326
http://mysite.local/blog/show/?my_secret_key=lara328
Для любителей тернарных операторов можно записать так:
$sys = (isset ($_GET['my_secret_key'])) ? $_GET['my_secret_key'] : 'laravel'; |
Если же необходимо проверить весь сайт на новой версии, а добавлять в URL секретный ключ не хочется, можно использовать другое решение. Проверяем IP, и для адреса разработчика заменяем версию ядра:
if ($_SERVER['REMOTE_ADDR'] == '45.8.11.32') $sys = 'lara328'; $paths['sys'] = $sys; |
И еще идея для самостоятельной реализации. Можно установить секретную куку разработчика и проверять её наличие через $_SERVER['HTTP_COOKIE']
.
К fuelphp уже не лежит душа? 🙂
Нет предела совершенству. Идеального фреймворка — тоже нет. Сделал проект на fuel. Посмотрел. Следующий делаю на laravel. Они очень близки по логике.
Касаемо статьи — подобное решение я использовал еще 4 года назад в проекте на Code Igniter. Скажу больше. Эти решения можно использовать в любом фреймворке.