Phalcon v4.0.0-alpha2 released

Read time: 3 minutes

The Phalcon Team is happy to announce the release of v4.0.0 Alpha 2! Github Tag

We cannot thank your community enough! By reporting bugs, offering feedback and suggestions, pull requests, being active in discussions about how the framework should move towards the future, you all help us make Phalcon better with every release.

As mentioned before, we took a different approach with our releases, with v4. The goal is to release often and release small. This way we allow the community to catch up, find bugs, provide feedback etc.

We are releasing the second alpha version today, which has a lot of bug fixes from the first alpha as well as completing work already commissioned for the v4 series. You can see our project here



  • Added notFound() method in Phalcon\Translate\Adapter\NativeArray which returns the key requested if not found. The method can be overriden when extending the class, returning what the developer needs #13007
  • Added Phalcon\Service\Locator, Phalcon\Service\LocatorInterface and Phalcon\Service\LocatorFactoryInterface to allow for the creation of service locators and factories throughout the application #13771
  • Added Phalcon\Http\Request::setParameterFilters. It allows you to preset filters for specific input (i.e. id, name etc.). You can then retrieve the automatcally sanitized values using Phalcon\Http\Request::getFilteredQuery, Phalcon\Http\Request::getFilteredPost and Phalcon\Http\Request::getFilteredPut #13488


  • Fixed Phalcon\Mvc\Micro::handle to properly return a response object #13712
  • Fixed Phalcon\Cache\Backend\Libmemcached returning “empty” values being as null when they could be 0, false or empty string. #13497
  • Fixed session adapters to properly implement SessionHandlerInterface::write
  • Fixed Phalcon\Session\Manager to not interact with $_SESSION variable if the session has not been started #13718, #13520
  • Fixed Phalcon\Cli\Console class not found error if handling the same module twice #13724
  • Fixed Phalcon\Cache\Backend\Libmemcached returning “empty” values being as null when they could be 0, false or empty string. #13497
  • Fixed Phalcon\Mvc\View\Engine\Volt\Compiler::functionCall building the incorrect code for the following tags; select, and select_static #13459
  • Fixed Phalcon\Tag\Select not rendering without any options.


  • Changed the Phalcon\Tag::renderTitle() parameters such as Phalcon\Tag::getTitle() #13706
  • Changed the Phalcon\Html\Tag::renderTitle() parameters such as Phalcon\Html\Tag::getTitle() #13706
  • Changed the Phalcon\Version::get() to follow semantic versioning #13720
  • Changed the Phalcon\Translate\Adapter\NativeArray to accept a new parameter in the constructor triggerError. This will trigger an error if the key is not found #13007
  • Changed the default action of Phalcon\Acl\Memoryto be Acl::DENY instead of Acl::ALLOW #13758
  • Changed Phalcon\Mvc\User\Plugin to Phalcon\Plugin #13749
  • Changed Phalcon\Exception to implement \Throwable interface.#13750
  • Changed Phalcon\Http\Cookie. The httpOnly property is no longer initialised with a value #13464
  • Changed the default action for no arguments of Phalcon\Acl\Memoryto be Acl::DENY instead of Acl::ALLOW #13769
  • Changed the implementation of Phalcon\Filter. It uses a service locator and a service locator factory now. It has more sanitizers now. #13060


We have been working in parallel to enhance our documentation and rewrite all the articles (or at least check them for accuracy) for v4. The progress is slow but steady and it will continue until we finalize all the documentation.

Several contributors have jumped in and are helping with all the documents, rewriting, proof reading and offering corrections. The documentation repository is located here, and our docs application here. Others have also visited our project on Crowdin, and are helping with translating our documents to their native tongue. The list of already refactored/rewritten documents can be found in our project for v4 in the docs repository.

Please note that we will accept changes to the docs repository only for the English language (en folder). All other languages are handled by Crowdin.


The packages in 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-alpha2. 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.

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.

Chat - Q&A


Social Media


<3 Phalcon Team

We're a nonprofit organization that creates solutions for web developers. Our products are Phalcon, Zephir and others. If you would like to help us stay free and open, please consider supporting us.