Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку
- То что 5.7 теперь требует PHP 5.3+, про это уже все знают и это объективное требование, ниже будет понятно почему.
- Плохая новость: 5.7 не совместим по API с 5.6.x. Т.е. расширения будут нуждаться в существенной переделке. С простыми расширениями все просто, есть даже 2 урока в How-To's о том как взять расширение для 5.6 и переделать в расширение для 5.7. А вот со сложными (которые мы преимущественно разрабатываем) придется по@#$ться.
- Полностью реорганизован код CMS. Нет более таких директорий, как models, libraries или helpers. Вместо этого есть одна директория - core, в которой все.
- Помашем ручкой декларативному программированию, например привычной нам строчке: defined('C5_EXECUTE') or die("Access Denied.");. Теперь внутри CMS весь код организован в пространство имен (namespaces) Concrete, в том числе блоки, атрибуты, пакеты и т.п.
- В 5.6 активно использовались классы из Zend Framework (лежали в concrete/libraries/3rdparty/Zend). 5.7 не менее активно использует Symfony2 (маршрутизация, система реквестов и респонсов, сессии, куки и события).
- Перепроектирована MVC. В частности в 5.7 отказываемся от tools'ов, все действия делаем внутри соответствующего контроллера (это и сейчас можно делать), а интерфейс во view.php (кстати можно использовать несколько разных отображений в зависимости от необходимости, мы это и сейчас используем).
- Убраны из кода всякие странные хаки (например: использование метода on_page_view в контроллере блока, чтобы подключить кастомные css и js, теперь все можно сделать в методе view).
- Помашем ручкой классу Loader, автозагрузка рулит (PSR-4 autoloading).
- Есть желание поощрить Test Driven разработку, т.е. облегчить нам написание unit-тестов к своему коду во время разработки (мы и сейчас пишем, но это не особо поддержано в С5, как например в Drupal, где разработчик не может добавить расширение, не покрытое тестами, в магазин расширений).
- Новая Assets system. Полезно при расширений ядра системы.
- Используется Laravel IoC Container - мощное средство для управления зависимостями классов. Внедрение зависимостей — это способ исключения вшитых (hardcoded) взаимосвязей классов. Вместо этого зависимости определяются во время выполнения, что даёт бо́льшую гибкость благодаря тому, что они могут быть легко изменены.
Понимание Laravel IoC Container необходимо для тех, кто строит большие и мощные приложения, так же как и для внесения изменений в код ядра. Короче, не знаю как для кого, но для нас очень полезная штучка будет. - Помашем ручкой ADODB. В 5.7 интегрированы Doctrine DBAL и Doctrine ORM (давно пора, я счетаю). Теперь есть класс BlockType работающий через Doctrine ORM, как доказательство концепции, хотя в текущей версии все еще много фактов прямого доступа к базе данных. В этой части, кстати, сохранена обратная совместимость. Был написан слой совместимости. Также есть AXMLS анализатор для старых блоков и пакетов (для анализа db.xml и иже с ними). Но жить этой прокладке скорее всего недолго.
- Больше нет файлов config/site_events.php, config/site_autoload.php и config/site_post.php. Вместо этого, есть один application/config/app.php, который может содержать все что угодно.
- Как можно было уже заметить из пункта 13, теперь все переопределения (и я полагаю аддоны) живут в директории application/
- Много старого кода JavaScript было обновлено и переработано.
- Хорошая новость: какое-то время будут параллельно поддерживаться и развиваться две ветки 5.6.x и 5.7.
В общем как-то так.