All Versions
100
Latest Version
Avg Release Cycle
58 days
Latest Release
1536 days ago

Changelog History
Page 1

  • v4.1.0 Changes

    October 31, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    ➕ Added

    • ➕ Added JWT (JSON Web Tokens) support under Phalcon\Security\JWT. Offers support for:
      • Token
      • Parser
      • Builder
      • Validator
      • Signers (None, HMAC)
      • Base64 encode/decodeUrl helper class
        #13856
    • ➕ Added additional HTML helpers under Phalcon\Html\Helper: Anchor, Base, Body, Button, Close, Element, Form, Img, Input\Color, Input\Date, Input\DateTime, Input\DateTimeLocal, Input\Email, Input\File, Input\Hidden, Input\Image, Input\Input, Input\Month, Input\Numeric, Input\Password, Input\Range, Input\Select, Input\Search, Input\Submit, Input\Tel, Input\Text, Input\Textarea, Input\Time, Input\Url, Input\Week, Label, Link, Meta, Ol, Script, Style, Title, Ul
      #14696
    • ➕ Added Phalcon\Http\Request::getPreferredIsoLocaleVariant() to return the base language if this is a specific one (en vs en-US) #3135
    • ➕ Added preload for Volt, which will send a HTTP/2 preload header #13128
    • ➕ Added Phalcon\Helper\Arr::blackList() to exclude elements of an array by the keys obtained from the elements of a blacklist #14801 @TimurFlush
    • ➕ Added Phalcon\Debug::renderHtml() to get a HTML representation of the exception #14794 @TimurFlush
    • ➕ Added Phalcon\Mvc\Router\Annotations->setActionPreformatCallback($callback) to set a callback which pre-formats actions to custom pattern #14819
    • ➕ Added new PDO wrapper for the Data Mapper implementation, with decorated instance, locator and profiler
      • Phalcon\DataMapper\Pdo\Connection
      • Phalcon\DataMapper\Pdo\Connection\Decorated
      • Phalcon\DataMapper\Pdo\Profiler\Profiler
      • Phalcon\DataMapper\Pdo\Profiler\MemoryLogger
      • Phalcon\DataMapper\Pdo\ConnectionLocator
        This component will be used in the Data Mapper implementation but can be used as a stand alone component for PDO connections. #14733
    • ➕ Added new Query Builder, as well as a factory, for the Data Mapper implementation supporting CRUD with bound parameters
      • Phalcon\DataMapper\Query\Bind
      • Phalcon\DataMapper\Query\Delete
      • Phalcon\DataMapper\Query\Insert
      • Phalcon\DataMapper\Query\Select
      • Phalcon\DataMapper\Query\Update
      • Phalcon\DataMapper\Query\QueryFactory
        🏗 This component can be used to create SQL statements using a fluent interface. Optionally the statements can be executed from the builder itself using the DataMapper\Pdo connection. #14734
    • ➕ Added Phalcon\Mvc\Micro\LazyLoader::getHandler() to return real handler when using lazy loaded controllers for Phalcon\Mvc\Micro #14871 @Jurigag
    • ➕ Added Phalcon\Collection\CollectionInterface and Phalcon\Config\ConfigInterface to use as typehints when extending or implementing custom classes #15106 @BeMySlaveDarlin
    • ➕ Added Phalcon\Db\Adapter\AdapterInterface::getDefaultValue() and supportsDefaultValue() methods to properly support the DEFAULT keyword #15180
    • ➕ Added Phalcon\Db\Adapter\AbstractAdapter::supportsDefaultValue() method to properly support the DEFAULT keyword #15180

    🔄 Changed

    • ➕ Added service checks for the session. Now cookies will be saved in the session only when the session service is defined #11770, #14649
    • 🔄 Changed Phalcon\Db\Adapter\*::getRawSQLStatement() to return the full SQL query with parameters #12196
    • 👉 Changed Phalcon\Filter::sanitize to throw a E_USER_NOTICE when a filter does not exist. #14679
    • 🖨 PHQL now supports the use of any printable characters from the extended ASCII table for escaped identifiers. The exception characters are [ and ]. To use [ and ] escape they (\[, \]) #14535
    • ✂ Removed UTF-8 charset when using Phalcon\Http\Response::setJsonContent to apply with rfc7159
    • 🔄 Changed the visibility of properties in Phalcon\Http\Message\Uri to work with clone. #15040
    • 🔄 Change Phalcon\Validation\AbstractValidator::__construct. Save custom validator message in options. #15053 @ivan-zolotavin
    • ➕ Add proxy methods without _ prefix in methods names: getRelatedRecords(), groupResult(), exists(), preSaveRelatedRecords(), preSave(), doLowUpdate(), postSaveRelatedRecords(), postSave(), cancelOperation(), doLowInsert(), getConnection(), getConnectionService(), getVersion(), getSpecial() #14971
    • Modified Phalcon\Mvc\Model\Relation to accept callable params for model relations. #15158

    🛠 Fixed

    • 🛠 Fixed Phalcon\Db\Dialect\Mysql::getColumnDefinition to recognize size for DATETIME, TIME and TIMESTAMP columns #13297
    • 🛠 Fixed Phalcon\Events\Manager to provide callable support #13322, #15045
    • 🛠 Fixed Phalcon\Validation\Validator\Uniqueness fixed except query #15084
    • 🛠 Fixed Phalcon\Mvc\Model to also check the params option in cascade relations when deleting #15098
    • 🛠 Fixed Phalcon\Mvc\Model to also check the params option in restricted relations when deleting #15172
    • 🛠 Fixed Phalcon\Mvc\Model::findFirst() to return correct value #15077
    • 🛠 Fixed Phalcon\Mvc\Model\CriteriaInterface::where() parameters #15144
    • 🛠 Fixed Phalcon\Http\Response\Cookies::set() to utilize the options parameter correctly #15129
    • 🛠 Fixed Phalcon\Http\Cookie::send() to define options parameter #15142
    • 🛠 Fixed Phalcon\Crypt performance issues. #15118
    • 🛠 Fixed Phalcon\Mvc\Router\Route unicode support in patterns #15102
    • Fixed fatal error in Phalcon\Mvc\Model::cloneResultMap() when column map is used with orm.cast_on_hydrate turned on. #14617
    • 🛠 Fixed Phalcon\Mvc\Model::sum(), average(), minimum(), maxmium(), count() to utilize the transaction parameter. #15113
    • 🛠 Fixed Phalcon\Mvc\Model::__set() to clear dirtyRelated when empty array is set. #14822
    • 🛠 Fixed Phalcon\Mvc\Model to skip columns with default values when the DEFAULT keyword is not supported by the database adapter (SQLite) #15180
    • 🛠 Fixed Phalcon\Mvc\Router to handle numeric routes properly #14926
    • 🛠 Fixed Phalcon\Session\Adapter\Redis and Phalcon\Session\Adapter\Libmemcached to utilize the prefix option #15184
    • 🛠 Fixed Phalcon\Mvc\Model to save the modified properties of previously queried single related records. #15148

    ✂ Removed

    • ✂ Removed Phalcon\Http\Cookie binding to session #11770
      • Phalcon\Http\Cookie no longer depends on the session service and data will not be duplicated in the session. This made it difficult to use cookies in stateless applications (SPA).
    • ✂ Removed unused property Phalcon\Mvc\Router::uriSource. #15123
  • v4.0.6 Changes

    May 16, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    🔄 Changed

    • 🔄 Changed Volt::convertEncoding to no longer using iconv for a fallback since it causes issues with macOS #14912
    • 🔄 Changed schema manipulation in Phalcon\Db\Dialect\Mysql - unquote numerical defaults #14888, #14974
    • 🔄 Changed the default ACL access level from boolean FALSE to Enum::DENY #14974
    • 🔄 Changed the way Phalcon\Http\Response::__construct checks content data type. Now a TypeError will be thrown if incompatible data type was passed #14983
    • 🔄 Changed return type hints of the following Phalcon\Flash\FlashInterface's methods: error, message, notice, success and warning #14994
    • 🔄 Changed return type hint for Phalcon\Mvc\ModelInterface::sum #15000
    • 🔄 Changed return type for Phalcon\Mvc\Model\Criteria::getLimit so that integer, NULL or array will be returned #15004
    • 🔄 Changed return type hint for Phalcon\Mvc\Model\Manager::getCustomEventsManager to return NULL instead of boolean FALSE if there is no special events manager #15008
    • 📇 Changed Phalcon\Mvc\Model\MetaData::getDI so that now it will throw a Phalcon\Mvc\Model\Exception if there is no DiInterface instance #15011
    • 🔄 Changed Phalcon\Http\Request::getJsonRawBody to use json_decode instead of Phalcon\Json::decode #14936
    • 🔄 Changed Phalcon\Factory\AbstractFactory to expose getService which will throw an exception if it does not exist. Removed checkService and adjusted all references in newInstance() calls. #15038
    • 🔄 Changed the visibility of methods and properties in Phalcon\Http\Message\Response, Phalcon\Http\Message\ServerRequest and Phalcon\Http\Message\Uri to work with clone. #15040

    🛠 Fixed

    • 🛠 Fixed Phalcon\Mvc\Model\Query\Builder::getPhql to add single quote between string value on a simple condition #14874
    • 🛠 Fixed recognizing language operators inside Volt's echo mode ({{ ... }}) #14476
    • 🛠 Fixed Tag::friendlyTitle to correctly convert titles under MacOS and Windows #14866
    • 🛠 Fixed the Volt compiler to no longer parse cache fragments and thus searching for the viewCache service (deprecated for v4) #14907
    • 🛠 Fixed IN operator precedence in Volt #14816
    • 🛠 Fixed testing suite to work with PHPUnit 9 when we upgrade #14837
    • 🛠 Fixed return type hints of the following Phalcon\Acl\AbstractAdapter's methods: getActiveAccess, getActiveRole and getActiveComponent #14974
    • 🛠 Fixed default value of the following Phalcon\Annotations\Annotation's properties: $arguments and $exprArguments #14977
    • 🛠 Fixed return type hints of the following Phalcon\Annotations\Annotation's methods: getArgument, getName and getNamedArgument #14977
    • 🛠 Fixed incorrect return type hint for Phalcon\Http\Response\Cookies::setSignKey #14982
    • 🛠 Fixed return type hints for Phalcon\Config\ConfigFactory::load and Phalcon\Config\ConfigFactory::newInstance to explicitly indicate the return type as Phalcon\Config instance #14978
    • 🛠 Fixed return type hints for the following methods #14987:
      • Phalcon\Dispatcher\AbstractDispatcher::dispatch
      • Phalcon\Dispatcher\DispatcherInterface::dispatch
      • Phalcon\Filter::get
      • Phalcon\Http\Message\AbstractCommon::cloneInstance
      • Phalcon\Http\Message\AbstractCommon::processWith
      • Phalcon\Http\Message\AbstractMessage::withAddedHeader
      • Phalcon\Http\Message\AbstractMessage::withBody
      • Phalcon\Http\Message\AbstractMessage::withHeader
      • Phalcon\Http\Message\AbstractMessage::withProtocolVersion
      • Phalcon\Http\Message\AbstractMessage::withoutHeader
      • Phalcon\Http\Message\AbstractRequest::withMethod
      • Phalcon\Http\Message\AbstractRequest::withRequestTarget
      • Phalcon\Http\Message\AbstractRequest::withUri
      • Phalcon\Mvc\Model\Binder::findBoundModel
      • Phalcon\Validation::getEntity
      • Phalcon\Validation\ValidationInterface::getEntity
    • 🛠 Fixed default value of Phalcon\Crypt::$key to satisfy the interface #14989
    • 🛠 Fixed return type hint for Phalcon\Di::getInternalEventsManager #14992
    • 🛠 Fixed return type hints of the following Phalcon\Flash\AbstractFlash's methods: error, notice, success and warning #14994
    • 🛠 Fixed return type hint for Phalcon\Translate\InterpolatorFactory::newInstance #14996
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model::sum #15000
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model\CriteriaInterface::getLimit and Phalcon\Mvc\Model\Criteria::getLimit to follow documentation and original purpose #15004
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model::count and Phalcon\Mvc\ModelInterface::count to reflect original behavior #15006
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model::getEventsManager to reflect original behavior #15008
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model::average and Phalcon\Mvc\ModelInterface::average to reflect original behavior #15013
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model\MetaData::getColumnMap and Phalcon\Mvc\Model\MetaData::getReverseColumnMap to reflect original behavior #15015
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model\MetaDataInterface::getColumnMap and Phalcon\Mvc\Model\MetaDataInterface::getReverseColumnMap to reflect original behavior #15015
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model\CriteriaInterface::getColumns and Phalcon\Mvc\Model\Criteria::getColumns to reflect original behavior #15017
    • 🛠 Fixed return type hint for Phalcon\Db\Column::getSize and Phalcon\Db\ColumnInterface::getSize to reflect original behavior #15019
    • 🛠 Fixed return type hint for Phalcon\Db\Column::getAfterPosition and Phalcon\Db\ColumnInterface::getAfterPosition to reflect original behavior #15021
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model\Manager::executeQuery and Phalcon\Mvc\Model\Manager::ManagerInterface to reflect original behavior #15024
    • 🛠 Fixed return type hint for Phalcon\Mvc\Model\Resultset::getFirst and Phalcon\Mvc\Model\ResultsetInterface::getFirst to reflect original behavior #15027
    • ⏪ Rollback the regression changes for Phalcon\Mvc\Model\Query::_prepareSelect to properly prepare a SQL SELECT statement from a PHQL one #14657
    • 🛠 Fixed SerializerInterface usage for Phalcon\Mvc\Model\Resultset\Complex::unserialize as well as Phalcon\Mvc\Model\Resultset\Complex::unserialize #14942

    ✂ Removed

    • ✂ Removed Phalcon\Translate\InterpolatorFactory::$mapper as well as Phalcon\Translate\InterpolatorFactory::$services in favor of Phalcon\Factory\AbstractFactory ones #15036
  • v4.0.5 Changes

    March 07, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    ➕ Added

    🔄 Changed

    🛠 Fixed

    • 🛠 Fixed Phalcon\Db::fetchAll to correctly return data when Enum::FETCH_COLUMN is supplied. #13321
    • 🛠 Fixed Postgres NULL values to not be required during model update. #14862
    • 🛠 Fixed MySQL alter column when default value contains not only CURRENT_TIMESTAMP #14880
    • 🛠 Fixed MySQL default value with ON UPDATE expression #14887
    • 🛠 Fixed Str::dirFromFile() to replace . with - to avoid issues with Windows environments #14858
  • v4.0.4 Changes

    February 15, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    ➕ Added

    • ➕ Added a way to utilize GitHub actions to run database tests against each RDBMS and reworked the testing suite. #14779
    • ➕ Added the latest version of Codeception (v4) and utilized the phalcon4 module. #14779

    🔄 Changed

    • 🔄 Changed Column 'notNull' definition to make possible create nullable (NULL) columns #14804

    🛠 Fixed

    • 🛠 Fixed Phalcon\Db\Adapter\Pdo\Postgresql to correctly identify bool fields instead of treating them as tinyint #14722 @tidytrax
    • 🛠 Fixed Phalcon\Cli\Console to pass current container to the Phalcon\Mvc\ModuleDefinitionInterface::registerAutoloaders() #14787 @TimurFlush
    • 🛠 Fixed Phalcon\Db\Dialect\Mysql::createTable() to create default value with CURRENT_TIMESTAMP ON UPDATE/DELETE [#14797]
    • 🛠 Fixed Phalcon\Storage\Adapter\* to no longer accept the serializer option as it was clashing with the factory #14828
    • 🛠 Fixed Phalcon\Http\Request to return the correct host on an UnexpectedValueException #14763
    • 🛠 Fixed Phalcon\Assets\Collection to initialize position to 0 #14848
  • v4.0.3 Changes

    January 25, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    🛠 Fixed

    • 🛠 Fixed Phalcon\Db\Adapter\Pdo\Mysql Tinyint(1) is handled as boolean under MySql #14708
    • 🛠 Fixed Phalcon\Mvc\View\Engine\Volt to produce the correct order of variables for the join filter #14771
    • 🛠 Fixed Phalcon\Storage\Adapter\Stream::getKeys() bug in the absence of a directory with a prefix name #14725, #14721
    • 🛠 Fixed Phalcon\Debug::onUncaughtException Should accept \Throwable instead of \Exception as an argument #14738
    • 🛠 Fixed Phalcon\Validation\ValidatorFactory Should return Phalcon\Validation\ValidatorInterface 14749
    • 🛠 Fixed Phalcon\Mvc\Model\Binder to now correctly call has and set on the cache object #14743
    • 🛠 Fixed Phalcon\Session\Adapter\Stream and Phalcon\Storage\Adapter\Stream to correctly handle simultaneous read/write #14694
    • 🛠 Fixed Phalcon\Config\ConfigFactory to always add the correct extension #14756
  • v4.0.2 Changes

    January 11, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    🛠 Fixed

    • 🛠 Fixed Phalcon version number incorrectly set in the previous release
  • v4.0.1 Changes

    January 11, 2020

    👌 Supported PHP Versions: 7.2, 7.3, 7.4

    🔄 Changed

    • 🔄 Changed the logic when logging times for Phalcon\Logger to use DateTimeImmutable so as to handle microseconds if necessary. #2893
    • 🔄 Changed Phalcon\Http\Cookie::send and Phalcon\Http\Cookie::delete to allow for samesite to be passed in the options when using PHP > 7.3 #14627

    🛠 Fixed

    • 🛠 Fixed Phalcon\Mvc\Model\Criteria Di isn't set when using Criteria::fromInput() #14538
    • 🛠 Fixed Phalcon\Db\Dialect\Mysql removing unnecessary parentheses for double and float #14645 @pfz
    • 🛠 Fixed Phalcon\Http\Cookie::delete to parse the correct parameters - cannot use alternative syntax until PHP 7.3 #14643
    • 🛠 Fixed Phalcon\Mvc\Model::__isset to take into account non visible properties by checking the getter if it exists #13518 #13900
    • 🛠 Fixed Phalcon\Mvc\Model::__set to return a more informative message if we are tying to access a non visible property #13518 #13900
    • 🛠 Fixed Phalcon\Mvc\Model\Resultset\Simple::toArray to correctly process virtual fields #14669
    • 🛠 Fixed Phalcon\Session\Manager::getUniqueKey to prefix the key only if uniqueId is present #14688
    • 🛠 Fixed Phalcon\Db\Adapter\Pdo::describeColumns to correctly detect ENUM columns #14691
  • v4.0.0 Changes

    July 14, 2019

    ➕ Added

    • ➕ Added Phalcon\Factory\Exception for factory exceptions. #13672
    • ➕ Added Phalcon\Filter\FilterInterface for custom filter implementations. #13672
    • ➕ Added Phalcon\Db\Adapter\PdoFactory: Factory to create PDO adapters. #13672
    • ➕ Added Phalcon\Image\ImageFactory: Factory to create image adapters. #13672
    • ➕ Added Phalcon\Logger\LoggerFactory: Factory to create logger objects. #13672
    • ➕ Added Phalcon\Translate\InterpolatorFactory: Factory to create interpolator objects. #13672
    • ➕ Added Phalcon\Translate\TranslateFactory: Factory to create translate objects. #13672
    • ➕ Added Phalcon\Domain\Payload to help in transferring messages between layers of the application. #14123
    • ➕ Added Phalcon\Domain\PayloadFactory: Factory to create payload objects. #14123
    • ➕ Added Phalcon\Http\Message\ServerRequestFactory::load: Method to create a ServerRequest object from globals. #14154
    • ➕ Added saslAuthData as option to Phalcon\Storage\Adapter\Libmemcached to authenticate using SASL #13394
    • ➕ Added Phalcon\Collection\ReadOnly: Read only collection. #14154
    • ➕ Added whiteList() to Phalcon\Helper\Arr #13954
    • ➕ Added Phalcon\Config\ConfigFactory::newInstance(): Factory to create config objects. #13201, #13768
    • ➕ Added Phalcon\Db\Enum #14213
    • ➕ Added Phalcon\Dispatcher\Exception #14213

    🔄 Changed

    • 📇 Renamed Phalcon\Annotations\Adapter\Files to Phalcon\Annotations\Adapter\Stream. #13672
    • 📇 Renamed Phalcon\Annotations\Adapter to Phalcon\Annotations\Adapter\AbstractAdapter. #13672
    • 📇 Renamed Phalcon\Annotations\AdapterInterface to Phalcon\Annotations\Adapter\AdapterInterface. #13672
    • 📇 Renamed Phalcon\Annotations\Factory to Phalcon\Annotations\AnnotationsFactory. #13672
    • 📇 Renamed Phalcon\Config\Factory to Phalcon\Config\ConfigFactory. #13672
    • 📇 Renamed Phalcon\Filter\FilterLocator to Phalcon\Filter. #13672
    • 📇 Renamed Phalcon\Filter\FilterLocatorFactory to Phalcon\Filter\FilterFactory. #13672
    • 📇 Renamed Phalcon\Image\Adapter to Phalcon\Image\Adapter\AbstractAdapter. #13672
    • 📇 Renamed Phalcon\Image\AdapterInterface to Phalcon\Image\Adapter\AdapterInterface. #13672
    • 📇 Renamed Phalcon\Paginator\Adapter to Phalcon\Paginator\Adapter\AbstractAdapter. #13672
    • 📇 Renamed Phalcon\Paginator\AdapterInterface to Phalcon\Paginator\Adapter\AdapterInterface. #13672
    • 📇 Renamed Phalcon\Paginator\Factory to Phalcon\Paginator\PaginatorFactory. #13672
    • 📇 Renamed Phalcon\Translate\Adapter to Phalcon\Translate\Adapter\AbstractAdapter. #13672
    • 📇 Renamed Phalcon\Translate\AdapterInterface to Phalcon\Translate\Adapter\AdapterInterface. #13672
    • 🔌 Phalcon\Plugin is now abstract.
    • 🚚 Moved method parameter in Phalcon\Mvc\Model\Manager::getRelationRecords() to the last position. #14115
    • 🚚 Moved method parameter in Phalcon\Mvc\Model\Manager::getBelongsToRecords() to the last position. #14115
    • 🚚 Moved method parameter in Phalcon\Mvc\Model\Manager::getHasOneRecords() to the last position. #14115
    • 🚚 Moved method parameter in Phalcon\Mvc\Model\Manager::getHasManyRecords() to the last position. #14115
    • 🚚 Validator messages were moved into each validator. #13208
    • Phalcon\Paginator\Repository::getProperty() now uses Phalcon\Helper\Arr::get().
    • 🔨 Refactored Phalcon\Collection to allow conditional key case sensitivity. #14154
    • 🔨 Refactored Phalcon\Registry to align with the Phalcon\Collection interface. #14154
    • 0️⃣ Phalcon\Mvc\Micro::setModelBinder() now uses the Factory Default DI if none is set. #14171
    • 👕 Phalcon\Mvc\Model\ValidationFailed now works with ModelInterface.
    • 🔨 Refactored Phalcon\Config to extend Phalcon\Collection #13201, #13768
    • 📇 Renamed Phalcon\Config to extend Phalcon\Config\Config #13201, #13768
    • 📇 Renamed Phalcon\Acl to Phalcon\Acl\Enum #14213
    • 📇 Renamed Phalcon\Acl\Adapter to Phalcon\Acl\Adapter\AbstractAdapter #14213
    • 📇 Renamed Phalcon\Acl\AdapterInterface to Phalcon\Acl\Adapter\AdapterInterface #14213
    • 📇 Renamed Phalcon\Application to Phalcon\Application\AbstractApplication #14213
    • 📇 Renamed Phalcon\CryptInterface to Phalcon\Crypt\CryptInterface #14213
    • 📇 Renamed Phalcon\Db\Adapter to Phalcon\Db\Adapter\AbstractAdapter #14213
    • 📇 Renamed Phalcon\Db\AdapterInterface to Phalcon\Db\Adapter\AdapterInterface #14213
    • 📇 Renamed Phalcon\Db to Phalcon\Db\AdapterDb #14213
    • 📇 Renamed Phalcon\Db\Adapter\Pdo to Phalcon\Db\Adapter\Pdo\AbstractPdo #14213
    • 📇 Renamed Phalcon\Dispatcher to Phalcon\Dispatcher\AbstractDispatcher #14213
    • 📇 Renamed Phalcon\DispatcherInterface to Phalcon\Dispatcher\DispatcherInterface #14213
    • 📇 Renamed Phalcon\EscaperInterface to Phalcon\Escaper\EscaperInterface #14213
    • 📇 Renamed Phalcon\Firewall\Adapter to Phalcon\Firewall\Adapter\AbstractAdapter #14213
    • 📇 Renamed Phalcon\Firewall\AdapterInterface to Phalcon\Firewall\Adapter\AdapterInterface #14213
    • 📇 Renamed Phalcon\Flash to Phalcon\Flash\AbstractFlash #14213
    • 📇 Renamed Phalcon\FlashInterface to Phalcon\Flash\FlashInterface #14213
    • 📇 Renamed Phalcon\Forms\Element to Phalcon\Forms\Element\AbstractElement #14213
    • 📇 Renamed Phalcon\Forms\ElementInterface to Phalcon\Forms\Element\ElementInterface #14213
    • 📇 Renamed Phalcon\Image to Phalcon\Image\Enum #14213
    • 📇 Renamed Phalcon\Mvc\View\Engine to Phalcon\Mvc\View\Engine\AbstractEngine #14213
    • 📇 Renamed Phalcon\Mvc\View\EngineInterface to Phalcon\Mvc\View\Engine\EngineInterface #14213
    • 👕 Renamed Phalcon\UrlInterface to Phalcon\Url\UrlInterface
    • 📇 Renamed Phalcon\Validator to Phalcon\Validator\Validator #14213
    • 📇 Renamed Phalcon\Validator\Validator to Phalcon\Validator\AbstractValidator #14213
    • 📇 Renamed Phalcon\Validator\ValidatorComposite to Phalcon\Validator\AbstractValidatorComposite #14213
    • 📇 Renamed Phalcon\Validator\CombinedFieldsValidator to Phalcon\Validator\AbstractCombinedFields #14213
    • 📇 Renamed Phalcon\Validator\Validator\File\FileAbstract to Phalcon\Validator\Validator\File\AbstractFile #14213

    🛠 Fixed

    • Fixed Phalcon\Mvc\View::getRender() to call view->finish() instead of ob_end_clean(). #14095
    • 🛠 Fixed Phalcon\Cache\Adapter\Libmemcached failing to set values when Phalcon\Mvc\Model\MetaData\Libmemcached was in use. #14100
    • 🛠 Fixed Phalcon\Db\Column to recognize tinyint, smallint, mediumint, integer as valid autoIncrement columns. #14102
    • 🛠 Fixed method parameter in Phalcon\Mvc\Model\Manager::getRelationRecords(), it's not always a string, null by default. #14115
    • 🛠 Fixed method parameter in Phalcon\Mvc\Model\Manager::getBelongsToRecords(), it's not always a string, null by default. #14115
    • 🛠 Fixed method parameter in Phalcon\Mvc\Model\Manager::getHasOneRecords(), it's not always a string, null by default. #14115
    • 🛠 Fixed method parameter in Phalcon\Mvc\Model\Manager::getHasManyRecords(), it's not always a string, null by default. #14115
    • 🛠 Fixed handlers property in Phalcon\Mvc\Micro\Collection to now always an array.
    • 🛠 Fixed crash in Phalcon\Mvc\Model::save() when saving a circular model relation. #13354
    • 🛠 Fixed Phalcon\Db\Dialect\Postgresql::truncateTable() to now escape table names. #14125
    • Fixed Phalcon\Mvc\Model\MetaData::write() to throw an exception if orm.exception_on_failed_metadata_save is set to true. #13433
    • 🛠 Fixed Phalcon\Image\Adapter\Gd to throw an error with imagecolorat. #14139
    • Phalcon\Mvc\Model\Criteria::limit() now corrects negative offsets.
    • 0️⃣ Phalcon\Di\FactoryDefault\Cli can now use the new Filter system.
    • 🛠 Fixed Phalcon\Mvc\Router now parses and uses path. #14087
    • 🛠 Fixed various areas in Phalcon\Acl\Adapter and Phalcon\Acl\Adapter\Memory including comments, logic, denyComponentAccess and AdapterInterface. Added tests. #13870
    • 🛠 Fixed Phalcon\Config::merge() not merging numeric values properly #13201, #13768
    • 🛠 Fixed Phalcon\Validation\Validator\File\AbstractFile missing the resolution of the value property #14198
    • 🛠 Fixed Phalcon\Storage\Adapter\Stream #14190
    • Phalcon\Form\Form::clear() now correctly clears single fields. #14217
    • 🛠 Fixed Phalcon\Form\Form::getValue() not to call getAttributes() when an element is named "attributes" #14226
    • 🛠 Fixed Phalcon\Model::delete() array to string conversion #14080
    • 🛠 Fixed segfault in Phalcon\Mvc\Micro\LazyLoader::callMethod() when handler contains syntax error.

    ✂ Removed

    • ✂ Removed Phalcon\Session\Factory. #13672
    • ✂ Removed Phalcon\Factory and Phalcon\FactoryInterface. #13672
    • ✂ Removed Phalcon\Translate. #13672
    • ✂ Removed Phalcon\Db\Column::getSchemaName() as its not relevant or settable.
    • Removed Phalcon\Config::__set_state() as it does not serve any purpose and skipped the constructor. #13201, #13768
    • Removed Phalcon\Annotations\Reflection::__set_state(), Phalcon\Db\ColumnInterface::__set_state(), Phalcon\Db\Column::__set_state(), Phalcon\Db\IndexInterface::__set_state(), Phalcon\Db\Index::__set_state(), Phalcon\Db\ReferenceInterface::__set_state(), Phalcon\Db\Reference::__set_state(), Phalcon\Di\ServiceInterface::__set_state(), Phalcon\Di\Service::__set_state(), Phalcon\Http\Response\HeadersInterface::__set_state(), Phalcon\Http\Response\Headers::__set_state(), Phalcon\Http\Request::__set_state(), Phalcon\Messages\Message::__set_state() #14212
  • v4.0.0-rc.3 Changes

    November 16, 2019

    ➕ Added

    • ➕ 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

    • 🔄 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

    • 🛠 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

    • ✂ Removed Phalcon\Logger\Formatter\Syslog - really did not do much #14523
  • v4.0.0-rc.2 Changes

    October 26, 2019

    ➕ Added

    • ➕ Added cast parameter to Phalcon\Collection::get and Phalcon\Helper\Arr::get allowing developers to cast the result returned to the type they want to. #14465
    • ➕ Added Phalcon\Paginator\Repository::jsonSerialize() implementing JsonSerializable #14475
    • ➕ Added Phalcon\Logger::getLogLevel() and Phalcon\Logger::setLogLevel() setting the minimum log level for the logger #14480

    🔄 Changed

    • Changed all calls to new <object> to use the create_instance or create_instance_params for better performance. #14419
    • ⚡️ Changed the exception text for Phalcon\Mvc\Model::getChangedFields and Phalcon\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 accept 0, null and "" as valid parameter for findByField(), findFirstByField() and countByField(). #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 use AdapterInterface instead of non existing AbstractAdapter #14414
    • 🛠 Fixed Phalcon\Cache\CacheFactory use Psr\SimpleCache\CacheInterface instead of non existing Phalcon\Cache\CacheInterface #14414
    • 🛠 Fixed Phalcon\Cache\CacheFactory use Psr\SimpleCache\CacheInterface instead of non existing Phalcon\Cache\CacheInterface #14414
    • 🛠 Fixed Phalcon\Cli\Router add missing Phalcon\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 return FilterInterface instead of non existing LocatorInterface #14414
    • 🛠 Fixed Phalcon\Forms\Element\Select::addOption() and Phalcon\Forms\Element\Select::setOption() to return ElementInterface instead of non existing Element #14414
    • 🛠 Fixed Phalcon\Forms\Manager::set() to return Manager instead of non existing FormManager #14414
    • 🛠 Fixed
    • Phalcon\Paginator\Adapter\AbstractAdapter::setCurrentPage()
    • Phalcon\Paginator\Adapter\AbstractAdapter::setLimit()
    • Phalcon\Paginator\Adapter\AbstractAdapter::setRepository() to return AdapterInterface instead of non existing Adapter #14414
    • 🛠 Fixed Phalcon\Translate\TranslateFactory::set() to return AdapterInterface instead of non existing AbstractAdapter #14414
    • 🛠 Fixed Phalcon\Filter to properly work with closures #14417
    • 🛠 Fixed Phalcon\Form::setAction() throwing error when called in Form::initialize() #14421
    • 🛠 Fixed Phalcon\Mvc\Model\Query\Lang::parsePHQL return type hint from string to array
    • 🛠 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 missing Phalcon\Cli\Router\RouteInterface
    • 🛠 Fixed incorrect return types on Phalcon\Mvc\View\Engine\AbstractEngine::partial and Phalcon\Mvc\View\Engine\EngineInterface::partial #14429
    • 🛠 Fixed Phalcon\Firewall\Adapter\AbstractAdapter::getRoleCallback and Phalcon\Firewall\Adapter\AbstractAdapter::setRoleCallback to correctly accept and return a Closure #14450
    • 🛠 Fixed Phalcon\Firewall\Adapter\AdapterInterface::getRoleCallback and Phalcon\Firewall\Adapter\AbstractAdapter::setRoleCallback to correctly accept and return a Closure #14450
    • 🛠 Fixed Phalcon\Events\Event::__constructor to correctly accept an object as the source 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 is null for related records. #14444
    • 🛠 Fixed Phalcon\Logger\Adapter\Syslog::__construct() incorrect receipt of the option from the options parameter. #14470
    • 🛠 Fixed Phalcon\Events\Manager::fire and Phalcon\Events\ManagerInterface::fire correctly aligning parameters and types. #14477
    • 🛠 Fixed Phalcon\Translate\* aligning parameters as array 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 and Phalcon\Mvc\Model::_doLowInsert throwing errors about column mapping when phalcon.orm.ignore_unknown_columns is set On #14485

    ✂ Removed

    • ✂ Removed Phalcon\Application\AbstractApplication::handle() as it does not serve any purpose and causing issues with type hinting. #14407
    • ✂ Removed getEventsManager and setEventsManager from Phalcon\Di\Injectable to the classes that utilise the methods or eventsManager property. #14269