Fri. Dec 6th, 2019

Cphalcon v4.0.0-RC3 releases, PHP C extension Web framework

2 min read

Cphalcon is an open-source Web framework, as the PHP language C extension, which provides higher performance and lower resource consumption.


  • Low overhead
    Low memory consumption and CPU compared to traditional frameworks
  • MVC & HMVC
    Modules, components, models, views, and controllers
  • Dependency Injection
    Dependency Injection and Location of services and it’s itself a container for them.
  • Rest
    In this case, you can use either a micro or full stack application to meet your goal. In addition, a powerful set of HTTP helpers.
  • Autoloader
    Provides the autoloading mechanism of PHP classes following PSR-4.
  • Router
    Phalcon\Mvc\Router provides advanced routing capabilities.

Cphalcon v4.0.0-RC3 has been released,



  • Added support for PSR-13 links and evolvable links #14507
    • Added Phalcon\Html\Link\Link
    • Added Phalcon\Html\Link\LinkProvider
    • Added Phalcon\Html\Link\EvolvableLink
    • Added Phalcon\Html\Link\EvolvableLinkProvider
    • Added Phalcon\Html\Link\Serializer\Header
    • Added Phalcon\Html\Link\Serializer\SerializerInterface
  • Added Phalcon\Collection:getKeys and Phalcon\Collection\getValues for getting data from the collection #14507
  • Added has-one-through relations to Phalcon\Mvc\Model and Phalcon\Mvc\Model\Manager #14511
  • Added Phalcon\Mvc\Model::hasOneThrough()
  • Added Phalcon\Mvc\Model\Manager::addHasOneThrough()
  • Added Phalcon\Mvc\Model\Manager::existsHasOneThrough()
  • Added Phalcon\Mvc\Model\Manager::getHasOneThrough()
  • Added Phalcon\Mvc\Model\ManagerInterface::addHasOneThrough()
  • Added Phalcon\Mvc\Model\ManagerInterface::existsHasOneThrough()
  • Added Phalcon\Mvc\Model\ManagerInterface::getHasOneThrough()
  • Added Phalcon\Http\Request::numFiles to return the number of files in the request #14519


  • Changed Phalcon\Paginator\Adapter\Model
    • Removed the data parameter
    • Added model parameter to pass model class
    • Added optional parameter parameters which is used as the parameter Model::find()


  • Fixed Phalcon\Annotations\AnnotationsFactory:newInstance to return the correct object back #14494
  • Fixed return types:
    • Phalcon\Db\Adapter\PdoFactory::load() now returns Phalcon\Db\Adapter\AdapterInterface
    • Phalcon\Db\Adapter\PdoFactory::newInstance() now returns Phalcon\Db\Adapter\AdapterInterface
    • Phalcon\Logger\LoggerFactory::load() now returns Phalcon\Logger
    • Phalcon\Validation\ValidatorFactory::newInstance now returns Phalcon\Factory\ValidatorInterface
  • Fixed Phalcon\Container:get to use getShared transparently #14502
  • Fixed Phalcon\Mvc\Model to include correct model instances in messages metadata #14510
  • Fixed Phalcon\Di\Injectable::__get() to return shared instance by default #14491
  • Fixed Phalcon\Mvc\View::loadTemplateEngines() to not share engine with other views by default #14491
  • Fixed Phalcon\Mvc\Model\Manager::getRelations() and getRelationsBetween() to return many-to-many relations correctly #14509
  • Fixed Phalcon\Logger to correctly allow transactional logging #14514
  • Fixed Phalcon\Annotations\Adapter\Stream::read and Phalcon\Annotations\Adapter\Stream::write to use serialize/unserialize vs. var_export #14515
  • Fixed Phalcon\Http\Request::hasFiles to return boolean and true if files are present #14519
  • Fixed Phalcon\Logger\Adapter\Syslog to correctly log Syslog messages #14522
  • Fixed Phalcon\Mvc\Model\MetaDataInterface::getIdentityField and Phalcon\Mvc\Model\MetaData::getIdentityField to also return null if the identity field is not present #14523
  • Fixed Phalcon\Storage\Serializer\Json to serialize objects that implement the JsonSerializable interface #14528
  • Fixed Phalcon\Collection to correctly return one level nested objects that implement JsonSerializable #14528
  • Fixed Phalcon\Mvc\View to only include first found instance of view when using multiple view directories #12977


  • Removed Phalcon\Logger\Formatter\Syslog – really did not do much #14523