We are very happy to announce the release of v4.0.0 Release Candidate (RC) 1!.
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!
As we are getting closer to the stable version of v4, this release has addressed a good number of outstanding issues, but also bugs found during testing. We only have one actual issue to resolve for v4 and 33 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.4 which offers a lot stricter type checks. As a result we have discovered a lot of interface to class misalignments and have fixed them.
We are also working to upgrade all of our sample applications to v4. Vokuro is nearly completed (minor enhancements remain such as code coverage) and work is already underway for phalcon-api.
Changelog
Added
- Added optional boolean parameter to
Phalcon\Http\Request::getURI()
(as well as its interface) which indicates whether or not the method should return only the path without the query string
Changed
- Changed
Phalcon\Url::get
to use implementation behindPhalcon\Helper\Str::reduceSlashes
to reduce slashes #14331 - Changed
Phalcon\Http\Headers\set()
to return self for a more fluent interface - Changed
Phalcon\Assets\Manager
,Phalcon\Cli\Router
,Phalcon\Dispatcher\AbstractDispatcher
,Phalcon\Html\Tag
,Phalcon\Http\Cookie
,Phalcon\Http\Request
,Phalcon\Http\Response\Cookies
,Phalcon\Mvc\Model
,Phalcon\Mvc\Router
,Phalcon\Security
,Phalcon\Session\Manager
to usePhalcon\Di\AbstractDiAware
for container functionality #14351 - Changed
Phalcon\Security
to allowsession
andrequest
in the constructor #14351 - Changed
Phalcon\Session\Manager
to allowrouter
in the constructor #14351 - Changed
Phalcon\Flash\Direct
to allowescaper
in the constructor #14349 - Changed
Phalcon\Flash\Session
to allowescaper
in the constructor #14349 - Changed
Phalcon\Di\AbstractDIAware
toPhalcon\Di\AbstractInjectionAware
#14359 - Changed
Phalcon\Di\Service
to use DI to initializestring
based services when possible #14342 - Changed
Phalcon\Mvc\Router\Annotations
to be able to handle patterns az prefixes #14259 - Changed
Phalcon\Mvc\Router\Group::routes
to an array as default #14259 - Changed
Phalcon\Mvc\Model::assign
changed order of parameters to $data, $whiteList, $dataColumnMap #14386 - Changed
Phalcon\Helper\Arr::arrayToObject
totoObject
#14389 - Changed
Phalcon\Events\EventsAwareInterface::getEventsManager
andPhalcon\Di\Injectable::getEventsManager
to return alsonull
#14404 - Changed
Phalcon\Logger\Adapter\AbstractAdapter::add
to now returnthis
#14404 - Changed
Phalcon\Mvc\RouterInterface
methods signature to returnRouteInterface
instead ofvoid
:Phalcon\Mvc\RouterInterface::setDefaultAction
Phalcon\Mvc\RouterInterface::setDefaultAction
Phalcon\Mvc\RouterInterface::setDefaultController
Phalcon\Mvc\RouterInterface::setDefaultModule
Phalcon\Mvc\RouterInterface::setDefaults
- Changed return types for following interfaces:
Phalcon\Mvc\Router\RouteInterface::setName
fromvoid
toRouteInterface
Phalcon\Mvc\Router\RouteInterface::via
fromvoid
toRouteInterface
Phalcon\Session\ManagerInterface::__get
fromvoid
tovar
Fixed
- Fixed
Phalcon\Helper\Str::includes
to return correct result #14301 - Fixed
Phalcon\Logger
moved to correct namespace #14263 - Fixed
Phalcon\Session\Adapter\AbstractAdapter::read()
to return ““(empty string) whenSession/Adapter/*::get()
returns null #14314 - Fixed
Phalcon\Cache\Exception
to extend Phalcon\Exception - Fixed
Phalcon\Cache\InvalidArgumentException
to extend Phalcon\Exception - Fixed
Phalcon\Collection\Exception
to extend Phalcon\Exception - Fixed
Phalcon\Storage\Adapter\AbstractAdapter::initSerializer
to throw exception ifnull === $this->serializerFactory && null === $this->serializer
#14324 - Fixed
Phalcon\Storage\Adapter\Redis::getAdapter()
to provide a persistent id for redis persistent connection #14334 - Fixed
Phalcon\Session\Adapter\Stream
to not override configured save path #14265 - Fixed
Phalcon\Http\Response::setFileToSend
to properly handle non-ASCII filenames #13919 - Fixed
Phalcon\Security::getSessionToken
return value #14346 - Fixed
Phalcon\Flash\*
interfaces formessage()
to returnstring/null
#14349 - Fixed
Phalcon\Paginator\Adapter\AbstractAdapter
throw exception iflimit <= 0
#14303 - Fixed
Phalcon\Mvc\Model\Query\Builder
Empty table alias in query #14366 - Fixed
Phalcon\Db\Adapter\PdoFactory
to reference the correct interface #14381 - Fixed
Phalcon\Db\Dialect\Mysql
Fixed missing schema in constraint for create table #14378 - Fixed
Phalcon\Mvc\Model::hasChanged()
andgetChangedFields()
returning false values whencastOnHydrate
option is on. #14376 - Fixed
Phalcon\Mvc\Model::create()
Using write connection to prevent replica lag #14256 - Fixed return types for following methods to satisfy interface declaration:
Phalcon\Acl\Adapter\AbstractAdapter::setDefaultAction
Phalcon\Application\AbstractApplication::setEventsManager
Phalcon\Firewall\Adapter\AbstractAdapter::setAlwaysResolvingRole
Phalcon\Firewall\Adapter\AbstractAdapter::setEventsManager
Phalcon\Mvc\Router::handle
Phalcon\Storage\Serializer\AbstractSerializer::getData
Phalcon\Storage\Serializer\AbstractSerializer::setData
Phalcon\Mvc\Dispatcher::forward
Phalcon\Mvc\Model::setConnectionService
Phalcon\Mvc\Model::setReadConnectionService
Phalcon\Mvc\Model::setWriteConnectionService
Phalcon\Mvc\Model\Query\Builder::setDI
Phalcon\Mvc\Router\Annotations::handle
Phalcon\Session\Bag::set
Phalcon\Session\Manager::remove
- Fixed
Phalcon\Di::remove()
to remove service. #14396
Removed
- Removed
Phalcon\Plugin
- duplicate ofPhalcon\DI\Injectable
#14359 - Removed
Phalcon\Mvc\Collection
and all related references. 4.0 will not support mongo as it is being re-implemented to take advantage of the latest Mongo driver (see #13697) #14361 - Removed
Phalcon\Session\Manager::registerHandler
- duplicate functionality #14381 - Removed
Phalcon\Html\Tag
- duplicate functionality #14381 - Removed
void
return type for all constructors #14401
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-rc1. 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