PhalconPHP 3.0.0 正式发布了，由于新版BC问题，根据semver，2.1.x不再发布，改为3.0.0。
PHP 5.3 and 5.4 are now fully deprecated
Phalcon\Mvc\Model\Validation is now deprecated in favor of Phalcon\Validation
Changed default hash algorithm in Phalcon\Security to CRYPT_BLOWFISH_Y
Changed constructor of Phalcon\Mvc\Model to allow pass an array of initialization data
Removed support for prefixes strategy in Phalcon\Loader
Now Phalcon\Mvc\View supports many views directories at the same time
An absolute path can now be used to Mvc\View::setLayoutsDir
Fixed odd view behavior#1933 related to setLayout() and pick()
Phalcon\Di is now bound to services closures allowing use Phalcon\Di as $this to access services within them
If an object is returned after firing the event beforeServiceResolve in Phalcon\Di this overrides the default service localization process
Placeholders :controller and :action in Mvc\Router now defaults to /([\\w0-9\\_\\-]+) instead of /([\\a-zA-Z0-9\\_\\-]+)
Modifier #u (PCRE_UTF8) is now default in regex based routes in Mvc\Router
Return 'false' from an action disables the view component (same as $this->view->disable())
Return a string from an action takes it as the body of the response (same as return $this->response->setContent('Hello world'))
Return a string from an Mvc\Micro handler takes it as the body of the response
Mvc\Router\Route now escapes characters such as . or + to avoid unexpected behaviors
Closures used as handlers inMvc\Micro are now bound to the $app instance
Routes now can have an associated callback that can override the default dispatcher + view behavior
Phalcon\Mvc\Model now implements JsonSerializable making easy serialize model instances
When destructing a Mvc\Model\Manager PHQL cache is clean
Method isSetOption in Phalcon\Validation\ValidatorInterface marked as deprecated, please use hasOption
Added internal check "allowEmpty" before calling a validator. If it option is true and the value of empty, the validator is skipped
Added default header: Content-Type: "application/json; charset=UTF-8" in method Phalcon\Http\Response::setJsonContent
Now Phalcon\Events\Event implements Phalcon\Events\EventInterface
Phalcon\Events\Event::getCancelable renamed to Phalcon\Events\Event::isCancelable
Removed Phalcon\Events\Manager::dettachAll in favor of Phalcon\Events\Manager::detachAll
Phalcon\Mvc\Model\Criteria::getOrder renamed to Phalcon\Mvc\Model\Criteria::getOrderBy
Added method getOption() in Phalcon\Mvc\Model\RelationInterface
Added ability to spoof HTTP request method
Added FULLTEXT index type to Phalcon\Db\Adapter\Pdo\Mysql
Fixed the use of the annotation router with namespaced controllers
Added Phalcon\Acl\RoleAware and Phalcon\Acl\ResourceAware Interfaces, Now you can pass objects to Phalcon\Acl\AdapterInterface::isAllowed as roleName and resourceName, also they will be automatically passed to function defined in Phalcon\Acl\AdapterInterface::allow or Phalcon\Acl\AdapterInterface::deny by type
Phalcon\Acl\AdapterInterface::allow and Phalcon\Acl\AdapterInterface::deny have 4th argument - function, which will be called when using Phalcon\Acl\AdapterInterface::isAllowed
Phalcon\Acl\AdapterInterface::isAllowed have 4th argument - parameters, you can pass arguments for function defined in Phalcon\Acl\AdapterInterface:allow or Phalcon\Acl\AdapterInterface::deny as associative array where key is argument name
Added method getActionSuffix() in Phalcon\DispatcherInterface
CLI parameters are now handled consistently.
Added Phalcon\Mvc\Controller\BindModelInterface and associated model type hint loading through dispatcher.
Phalcon\Cli\Console and Phalcon\Mvc\Application now inherit Phalcon\Application.
Fixed afterFetch event not being sent to behaviors
Fixed issue with radio not being checked when default value is 0 #11358
Fixed issue with Model::__set that was bypassing setters #11286
Fixed issue with Model::__set that was setting hidden attributes directly when setters are not declared #11286
Added Phalcon\Cli\DispatcherInterface, Phalcon\Cli\TaskInterface, Phalcon\Cli\RouterInterface and Phalcon\Cli\Router\RouteInterface.
Added Phalcon\Mvc\Collection::update, Phalcon\Mvc\Collection::create and Phalcon\Mvc\Collection::createIfNotExist
Removed __construct from all interfaces #11410
Fires the dispatch:beforeException event when there is any exception during dispatching #11458
Added OR operator for Phalcon\Mvc\Model\Query\Builder methods: betweenWhere, notBetweenWhere, inWhere and notInWhere
Fixed bug of destroy method of Phalcon\Session\Adapter\Libmemcached
Added Phalcon\Cache\Backend\Memcache::addServers to enable pool of servers for memcache
Added setLastModified method to Phalcon\Http\Response
Added \Phalcon\Queue\Beanstalk::ignore() It removes the named tube from the watch list for the current connection.
Added \Phalcon\Queue\Beanstalk::pauseTube() Can delay any new job being reserved for a given time.
Added \Phalcon\Queue\Beanstalk::kick() It moves jobs into the ready queue. If there are any buried jobs, it will only kick buried jobs. Otherwise it will kick delayed jobs.
Added \Phalcon\Queue\Beanstalk::listTubeUsed() Returns the tube currently being used by the client.
Added \Phalcon\Queue\Beanstalk::listTubesWatched() Returns a list tubes currently being watched by the client.
Added \Phalcon\Queue\Beanstalk::peekDelayed() Return the delayed job with the shortest delay left.
Added \Phalcon\Queue\Beanstalk::jobPeek() Return job.
Mcrypt is replaced with openssl in Phalcon\Crypt
Default encrypt algorithm in Phalcon\Crypt is now changed to AES-256-CFB
Removed methods setMode(), getMode(), getAvailableModes() in Phalcon\CryptInterface
Added Phalcon\Assets\Manager::exists() to check if collection exists
Phalcon\Mvc\Model\Manager::load() now can load models from aliased namespaces
Phalcon\Mvc\Model\Transaction\Manager now correctly keeps account of transactions #11554
Phalcon\Db\Dialect\Sqlite now maps additional column types to SQLite columns equivalents.
Phalcon\Security is using now Phalcon\Security\Random
Enforced that Phalcon\Security::getToken() and Phalcon\Security::getTokenKey() return a random value per request not per call
Phalcon\Security::getToken() and Phalcon\Security::getTokenKey() are using now Phalcon\Security::_numberBytes instead of passed as a argument or hardcoded value
Phalcon\Security::hash() corrected not working CRYPT_STD_DES, CRYPT_EXT_DES, MD5, CRYPT_SHA256
Phalcon\Security::hash() CRYPT_SHA512 fixed wrong salt length
Added missing unit-tests for Phalcon\Security
Fixed Filter::add method handler #11581
Removed Phalcon\Session #11340
Phalcon\Tag::getTitle() shows a title depending on prependTitle and appendTitle
Using a settable variable for the Mongo Connection Service name instead of a hard coded string #11725
Added new getter Phalcon\Mvc\Model\Query\Builder::getJoins() - to get join parts from query builder
Fixed Phalcon\Db\Dialect\Oracle::prepareTable() to correctly generate SQL for table aliases #11799
Fixed Phalcon\Mvc\Model\Resultset::update() - removed endless loop queries
The cache backend adapters now returns boolean on call Phalcon\Cache\BackendInterface::save
Fixed the Session write callback #11733
Added '\Phalcon\Loader::registerFiles' & '\Phalcon\Loader::getFiles'. This allows you to add files to the autoloader
Added Phalcon\Security::hasLibreSsl and Phalcon\Security::getSslVersionNumber
Added new setter Phalcon\Escaper::setDoubleEncode() - to allow setting/disabling double encoding
Added Phalcon\Cache\Frontend\Msgpack - Added Msgpack Support for Frontend Cache
Phalcon\Debug\Dump skip debugging di, fix detecting private/protected properties
Added option to validate multiple fields with one validator(fix uniqueness validator as well), also removes unnecessary model => $this in Phalcon\Validation\Validator\Uniqueness.
Phalcon\Validation\Validator\Alpha now correctly validates non-ASCII characters #11386
Phalcon\Validation\Validator\Digit now correctly validates digits #11374
Added Phalcon\Validation\CombinedFieldsValidator, validation will pass array of fields to this validator if needed
Added ability to autoescape Flash messages #11448
Fixed Phalcon\Config::merge for working with php7
Added ability to use custom delimiter for Phalcon\Text::camelize and Phalcon\Text::uncamelize #10396
Added support of CONNECT, TRACE and PURGE HTTP methods
Refactored Phalcon\Http\Request::getHttpHost. Now it always return host name or empty string. Optionally validates and clean host name #2573
Added Phalcon\Http\Request::getPort. To get information about the port on which the request is made.
Added Phalcon\Http\Request::setStrictHostCheck and Phalcon\Http\Request::isStrictHostCheck to manage strict validation of host name.
Fixed matching host name by Phalcon\Mvc\Route::handle when using port on current host name #2573
Fixed Phalcon\Text:dynamic() to allow custom separator #11215
Fixed Phalcon\Validation::appendMessage to allow append message to the empty stack #10405
Fixed Phalcon\Session\Flash::getMessages. Now it returns an empty array in case of non existent message type request #11941
Amended Phalcon\Mvc\RouterInterface and Phalcon\Mvc\Router. Added missed addPurge, addTrace and addConnect methods
Fixed incorrect query when using NULL fields with Phalcon\Validation\Validator\Uniqueness
Fixed Phalcon\Forms\Form::getValue. Now Elements can have names that match with the internal Form getters #10398
Add setContentLength() method to Phalcon\Http\Response
Fixed Phalcon\Mvc\Model\Manager::_mergeFindParameters - Merging conditions #11987
Renamed Phalcon\Http\Request::isSoapRequest to Phalcon\Http\Request::isSoap and Phalcon\Http\Request::isSecureRequest to Phalcon\Http\Request::isSecure. Left the originals functions as aliases and marked them deprecated.
Fixed wildcard inheritance in Phalcon\Acl\Adapter\Memory #12004
Dropped support of Oracle #12008
Improved Phalcon\Mvc\Collection::findById. Added check if a id in a valid format #12010
Added convert option to Phalcon\Validation\Validator\Uniqueness to convert values to do the database lookup #12005