Разработчики фреймворка утверждают что это 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 могут скачать бинарники на странице загрузки.