We are very happy to announce the release of v4.0.0 Release Candidate (RC) 2!.
We cannot thank your community enough! We said this before but it is worth repeating: our community is what drives this project forward and makes it better with every release!
We streamed this release live! https://www.youtube.com/watch?v=sIuXxCry_fc
This release has not added any more functionality. We have discovered quite a few issues regarding interfaces and some bugs that our awesome community discovered. All of those have been fixed!
We are now on the final stretch as they say, ready to fix anything that is found between this release and the stable one and 14 documents to revise.
You can see the remaining cards for v4 in our project page.
Regarding the documents, you can check our progress in this issue:
https://github.com/phalcon/docs/issues/2322
In this version we are using Zephir 0.12.10 which enjoys better memory management and stricter type checks.
As far as our sample applications, Vokuro has been upgraded to v4 as well as REST-API and the basic tutorial. We will upgrade the forum and invo after v4 is released.
Changelog
Added
- Added
cast
parameter toPhalcon\Collection::get
andPhalcon\Helper\Arr::get
allowing developers to cast the result returned to the type they want to. #14465 - Added
Phalcon\Paginator\Repository::jsonSerialize()
implementingJsonSerializable
#14475 - Added
Phalcon\Logger::getLogLevel()
andPhalcon\Logger::setLogLevel()
setting the minimum log level for the logger #14480
Changed
- Changed all calls to
new <object>
to use thecreate_instance
orcreate_instance_params
for better performance. #14419 - Changed the exception text for
Phalcon\Mvc\Model::getChangedFields
andPhalcon\Mvc\Model::getUpdatedFields
when there is no snapshot setup #14468 - Changed
Phalcon\Mvc\Model::__callStatic()
to throw an exception if the called method is unknown. #14467 - Changed
Phalcon\Mvc\Model
to accept0
,null
and""
as valid parameter forfindByField()
,findFirstByField()
andcountByField()
. #14467
Fixed
- Fixed
Phalcon\Mvc\View\Engine\Volt\Compiler::parse()
Corrected syntax recognize for “set” keyword. #14288 - Fixed
Phalcon\Mvc\View\Engine\Volt\Compiler::parse()
Corrected syntax recognize for “is” keyword. #11683 - Fixed
Phalcon\Cache\Adapter\AbstractAdapter
useAdapterInterface
instead of non existingAbstractAdapter
#14414 - Fixed
Phalcon\Cache\CacheFactory
usePsr\SimpleCache\CacheInterface
instead of non existingPhalcon\Cache\CacheInterface
#14414 - Fixed
Phalcon\Cache\CacheFactory
usePsr\SimpleCache\CacheInterface
instead of non existingPhalcon\Cache\CacheInterface
#14414 - Fixed
Phalcon\Cli\Router
add missingPhalcon\Cli\Router\RouteInterface
#14414 - Fixed
Phalcon\Dispatcher\AbstractDispatcher::setModelBinder()
to return DispatcherInterface instead of non existing Dispatcher: #14414 Phalcon\Firewall\Adapter\Acl
Phalcon\Firewall\Adapter\Annotations
- Fixed
Phalcon\Filter\FilterFactory::newInstance()
to returnFilterInterface
instead of non existingLocatorInterface
#14414 - Fixed
Phalcon\Forms\Element\Select::addOption()
andPhalcon\Forms\Element\Select::setOption()
to returnElementInterface
instead of non existing Element #14414 - Fixed
Phalcon\Forms\Manager::set()
to returnManager
instead of non existingFormManager
#14414 - Fixed
Phalcon\Paginator\Adapter\AbstractAdapter::setCurrentPage()
Phalcon\Paginator\Adapter\AbstractAdapter::setLimit()
Phalcon\Paginator\Adapter\AbstractAdapter::setRepository()
to returnAdapterInterface
instead of non existingAdapter
#14414- Fixed
Phalcon\Translate\TranslateFactory::set()
to returnAdapterInterface
instead of non existingAbstractAdapter
#14414 - Fixed
Phalcon\Filter
to properly work with closures #14417 - Fixed
Phalcon\Form::setAction()
throwing error when called inForm::initialize()
#14421 - Fixed
Phalcon\Mvc\Model\Query\Lang::parsePHQL
return type hint fromstring
toarray
- Fixed
NOT BETWEEN
support in PHQL #14253 - Fixed
Phalcon\Storage\Adapter\Stream
to correctly serialize and unserialize data #14408 - Fixed
Phalcon\Storage\Serializer\Json
to throw an exception if storing an object #14408 - Fixed
Phalcon\Http\Message\ServerRequestFactory::load
to correctly handle superglobals that have not been defined #14426 - Fixed
Phalcon\Forms\Form
to initialize attributes object if not initialized #14430 - Fixed
Phalcon\Http\Message\ServerRequestFactory::load
to correctly detect the protocol passed from$_SERVER
#14432 - Fixed
Phalcon\Cli\Router\Route
added missingPhalcon\Cli\Router\RouteInterface
- Fixed incorrect return types on
Phalcon\Mvc\View\Engine\AbstractEngine::partial
andPhalcon\Mvc\View\Engine\EngineInterface::partial
#14429 - Fixed
Phalcon\Firewall\Adapter\AbstractAdapter::getRoleCallback
andPhalcon\Firewall\Adapter\AbstractAdapter::setRoleCallback
to correctly accept and return aClosure
#14450 - Fixed
Phalcon\Firewall\Adapter\AdapterInterface::getRoleCallback
andPhalcon\Firewall\Adapter\AbstractAdapter::setRoleCallback
to correctly accept and return aClosure
#14450 - Fixed
Phalcon\Events\Event::__constructor
to correctly accept anobject
as thesource
parameter #14449 - Fixed
Phalcon\Cache::checkKey()
added.
to key characters pattern #14457 - Fixed
Phalcon\Mvc\Model\Manager
to store reusable related records correctly. #14444 - Fixed
Phalcon\Mvc\Model::__call()
not to throw an exception when the return value isnull
for related records. #14444 - Fixed
Phalcon\Logger\Adapter\Syslog::__construct()
incorrect receipt of theoption
from theoptions
parameter. #14470 - Fixed
Phalcon\Events\Manager::fire
andPhalcon\Events\ManagerInterface::fire
correctly aligning parameters and types. #14477 - Fixed
Phalcon\Translate\*
aligningparameters
asarray
with the interpolator calls. #14477 - Fixed
Phalcon\Storage\AdapterFactory:newInstance
to return the correct interface #14481 - Fixed
Phalcon\Mvc\Dispatcher:forward
to accept an array vs a mixed variable #14481 - Fixed
Phalcon\Mvc\Model::_doLowUpdate
andPhalcon\Mvc\Model::_doLowInsert
throwing errors about column mapping whenphalcon.orm.ignore_unknown_columns
is setOn
#14485
Removed
- Removed
Phalcon\Application\AbstractApplication::handle()
as it does not serve any purpose and causing issues with type hinting. #14407 - Removed
getEventsManager
andsetEventsManager
fromPhalcon\Di\Injectable
to the classes that utilise the methods oreventsManager
property. #14269
Installation/Upgrade
The packages in packagecloud.io are being updated (at the time of this post) and will be ready soon. You will need to use the mainline
repository to install v4.0.0-rc2. You can also download the zip file, as well as DLLs for Windows, from our release page here.
You can also clone the repository and checkout the tag, and then run
zephir fullclean
zephir build
to install the new extension. Detailed installation instructions can be found in our documentation page.
Note: It might take a bit of time for the DEB and RPM packages to be built from when this blog post is published.
Thank you
Once again a huge thank you to all of our contributors! You guys have helped us a lot. You can help us even more by installing this version and testing it. If you find bugs, please report them in our Github Issues page. Alternatively you can always join us in our Discord server or our Forum.
Finally, don’t forget to star our project on GitHub and follow us on our social media:
Chat - Q&A
Support
Social Media
Videos
<3 Phalcon Team