Разработчики фреймворка утверждают что это LTS версия, которая будет поддерживаться 3 года со дня выхода. И что RC1 - последний релиз-кандидат перед выходом финального релиза.

Релиз включает в себя просто огромный список изменений и всяческих улучшений. Кто не может дождаться выхода версии 2.1 - вам осталось ждать всего 2 недели!

Изменения версии 2.1

  • PHP 5.3 больше не поддерживается
  • Phalcon\Mvc\Model\Validation заменен на Phalcon\Validation
  • Стандартный режим шифрования в Phalcon\Crypt изменен на MCRYPT_MODE_CFB
  • Стандартный алгоритм хэширования в Phalcon\Security изменен на CRYPT_BLOWFISH_Y
  • Изменен конструктор Phalcon\Mvc\Model, в который теперь можно передавать массив данных для инициализации
  • Убрана поддержка prefixes strategy в Phalcon\Loader
  • Phalcon\Mvc\View теперь поддерживает множество директорий с представлениями одновременно
  • Теперь поддерживаются абсолютные пути в Mvc\View::setLayoutsDir
  • Исправлено странное поведение представления #1933 связанное с setLayout() и pick()
  • Phalcon\Di теперь связан с замыканиями сервисов, что позволяет использовать Phalcon\Di как $this для доступа к сервисам
  • Если объект возвращается после события beforeServiceResolve в Phalcon\Di это переопределяет стандартный service localization process
  • Плейсхолдеры :controller и :action в Mvc\Router теперь по-умолчанию имею значение /([\\w0-9\\_\\-]+) вместо /([\\a-zA-Z0-9\\_\\-]+)
  • Модификатор #u (PCRE_UTF8) теперь используется по-умолчанию в роутах с regex в Mvc\Router
  • Возврат 'false' из экшена отключает компонент view (аналогично как и $this->view->disable())
  • Возврат строки из экшена устанавлиает ее в качестве содержимого ответа (аналогично как и $this->response->setContent('Hello world'))
  • Возврат строки из обработчика Mvc\Micro устанавлиает ее в качестве содержимого ответа
  • Mvc\Router\Route теперь экранирует символы . или + для предотвращения неожиданного поведения
  • Замыкания, используемые в Mvc\Micro теперь привязаны к экземпляру $app
  • Маршрутам теперь можно назначать колбэки, которые могут переопределять стандартные поведения dispatcher и view
  • Phalcon\Mvc\Model теперь реализует JsonSerializable для упрощения сериализации
  • При удалении Mvc\Model\Manager очищается кэш PHQL
  • Метод isSetOption в Phalcon\Validation\ValidatorInterface помечен как устаревший, нужно использовать hasOption
  • Добавлена внутренняя проверка условия "allowEmpty" перед вызовом валидатора. Если оно выполняется и значение пустое - валидатор не вызывается
  • Добавлен заголовок: Content-Type: "application/json; charset=UTF-8" в метод Phalcon\Http\Response::setJsonContent
  • Phalcon\Events\Event теперь реализует Phalcon\Events\EventInterface
  • Phalcon\Events\Event::getCancelable переименован в Phalcon\Events\Event::isCancelable
  • Phalcon\Events\Manager::dettachAll удален в пользу Phalcon\Events\Manager::detachAll
  • Phalcon\Mvc\Model\Criteria::getOrder переименован в Phalcon\Mvc\Model\Criteria::getOrderBy
  • Добавлен метод getOption() в Phalcon\Mvc\Model\RelationInterface
  • Добавлена возможность подменять тип HTTP запроса
  • Добавлен тип индекса FULLTEXT в Phalcon\Db\Adapter\Pdo\Mysql
  • Исправлено использование маршрутов в аннотациях для контроллеров с пространствами имен
  • Добавлены интерфейсы Phalcon\Acl\RoleAware и Phalcon\Acl\ResourceAware, теперь можно передавать объекты в Phalcon\Acl\AdapterInterface::isAllowed в качестве roleName и resourceName, также они автоматически будут переданы в функцию, определенную в Phalcon\Acl\AdapterInterface::allow или Phalcon\Acl\AdapterInterface::deny
  • Phalcon\Acl\AdapterInterface::allow и Phalcon\Acl\AdapterInterface::deny получили 4-ый аргумент - функцию, которая будет вызвана при использовании Phalcon\Acl\AdapterInterface::isAllowed
  • Метод Phalcon\Acl\AdapterInterface::isAllowed получил 4-ый аргумент - это аргументы, которые можно передать функции, определенной в Phalcon\Acl\AdapterInterface:allow или Phalcon\Acl\AdapterInterface::deny в качестве ассоциативного массива, где ключ - название аргумента
  • Добавлен метод getActionSuffix() в Phalcon\DispatcherInterface
  • Параметры CLI теперь обрабатываются последовательно
  • Добавлен Phalcon\Mvc\Controller\BindModelInterface и загрузка из диспетчера типов данных требуемой модели
  • Добавлен Phalcon\Dispatcher::hasParam().
  • Phalcon\Cli\Console и Phalcon\Mvc\Application теперь наследуют Phalcon\Application
  • Исправлено событие afterFetch
  • Исправлена ошибка, когда radio элемент не был активирован, если его значение по-умолчанию равно 0 #11358
  • Исправлена ошибка с Model::__set, которая позволяла обходить сеттеры #11286
  • Исправлена ошибка с Model::__set, которая позволяла присваивать значения скрытым атрибутам напрямую если сеттеры были не определены #11286
  • Добавлены интерфейсы Phalcon\Cli\DispatcherInterface, Phalcon\Cli\TaskInterface, Phalcon\Cli\RouterInterface и Phalcon\Cli\Router\RouteInterface.
  • Добавлены методы Phalcon\Mvc\Collection::update, Phalcon\Mvc\Collection::create и Phalcon\Mvc\Collection::createIfNotExist
  • Удален __construct из всех интерфейсов #11410
  • Запуск события dispatch:beforeException во время любого исклюения во время dispatching #11458
  • Добавлен оператор OR для методов класса Phalcon\Mvc\Model\Query\Builder: betweenWhere, notBetweenWhere, inWhere и notInWhere
  • Исправлена ошибка метода destroy в Phalcon\Session\Adapter\Libmemcached
  • Добавлен метод Phalcon\Cache\Backend\Memcache::addServers для возможности добавления нескольких серверов memcache
  • Добавлен метод setLastModified в Phalcon\Http\Response
  • Добавлен валидатор Phalcon\Validation\Validator\Date
  • Mcrypt заменен на openssl в Phalcon\Crypt
  • Удалены методы setMode(), getMode(), getAvailableModes() в Phalcon\CryptInterface
  • Добавлен метод Phalcon\Assets\Manager::exists() для проверки существования коллекции

Поддержка PHP 7

Phalcon 2.1.x получит бета-поддержку PHP 7, разработчики обещают исправить все критичные ошибки перед финальным релизом. Вы можете уже попробовать Phalcon в связке с PHP 7 скомпилировав ветку 2.1.x используя Zephir:

git clone http://github.com/phalcon/cphalcon
cd cphalcon
git checkout 2.1.x
zephir build --backend=ZendEngine3

После чуго нужно добавить extension=phalcon.so в ваш php.ini.

Новая Package Infrastructure

Разработчики хотят упростить процессы сборки, распространения и установки фреймворка, чтобы охватить как можно больше платформ, тем самым облегчив жизнь себе и пользователям Phalcon. И для этого они выбрали сервис Packagecloud. Сервис сделает возможной установку Phalcon с помощью встроенного в любой linux дистрибутив пакетного менеджера.

Update/Upgrade

Phalcon 2.1 RC1 можно установить из ветки 2.1.x. Если у вас не установлен Zephir следуйте следующей инструкции:

git clone http://github.com/phalcon/cphalcon
cd cphalcon/build
git checkout 2.1.x
sudo ./install

Если Zephir установлен:

git clone http://github.com/phalcon/cphalcon
cd cphalcon
git checkout 2.1.x
zephir build

Будьте осторожны, эти действия удалят любую ранее установленную версию Phalcon.

Пользователи windows могут скачать бинарники на странице загрузки.