We are very happy to announce the release of Phalcon v5.0.0 Alpha 7!
This release requires PHP 7.4 or PHP 8.0
This release is packed with changes - a lot of them breaking backwards compatibility. A lot of classes were moved, some components were removed or replaced with others, and we have increased code coverage significantly. Additionally we resolved over 50 cards in our project (bugs, NFRs etc.)
This will be the last alpha version
We have less than 10 cards to address for this release and 8 classes to move from the top namespace to their future “homes”. The next version will be a beta, at which point we will concentrate on any bugs reported, documentation as well as supporting applications (devtools, incubator, invo etc.).
We have also aligned all the tests between cphalcon (v5) and phalcon (v6), ensuring that we do not reinvent the wheel or lose functionality/code coverage.
Quite a bit of work left but we are getting there!
Huge thanks to our contributors that reported issues, offered input as well as submitted pull requests with additions and corrections!
NOTE: You can always check our roadmap and the status of our active sprint for v5 in our project page: https://github.com/orgs/phalcon/projects/4
Changelog
[5.0.0alpha7]
Changed
- Changes to the
Phalcon\Acl:- Renamed
Phalcon\Acl\ComponentAwaretoPhalcon\Acl\ComponentAwareInterface - Renamed
Phalcon\Acl\RoleAwaretoPhalcon\Acl\RoleAwareInterface#15691
- Renamed
- Changed
requiretorequire_onceinPhalcon\Loaderto avoid conflicts with other loaders #15489 - Changed
requiretorequire_onceinPhalcon\Cli\ConsoleandPhalcon\Mvc\Applicationfor a bit of extra performance #15489 Phalcon\Collectionhas been moved under theSupportnamespace:- Renamed
Phalcon\CollectiontoPhalcon\Support\Collection - Renamed
Phalcon\Collection\ExceptiontoPhalcon\Support\Collection\Exception - Renamed
Phalcon\Collection\ReadOnlytoPhalcon\Support\Collection\ReadOnly - Renamed
Phalcon\CollectiontoPhalcon\Support\Collection#15700
- Renamed
- Changes to
Phalcon\Session\Bag:- Changed
Phalcon\Session\Bag::constructto accept a container instead of internally calling the default - Changed
Phalcon\Session\Bag::constructto throw an exception if the container is not specified - Changed
Phalcon\Session\Bag::initto store the data in the session #15494
- Changed
- Changed
Phalcon\Events\Event::construct()to allowsourceto be nullable #15133 - Changes to
Phalcon\Crypt- Moved
Phalcon\Crypt\ExceptiontoPhalcon\Crypt\Exception\Exception - Moved
Phalcon\Crypt\MismatchtoPhalcon\Crypt\Exception\Mismatch - Changed the ccm/gcm modes to store the
authTagwith the encryption string and process it with the decryption string #15717
- Moved
- Created new namespace
Phalcon\Encryption- Moved
Phalcon\CrypttoPhalcon\Encryption\Crypt - Moved
Phalcon\SecuritytoPhalcon\Encryption\Security - Moved the whole
Securitynamespace underEncryptionSecurity\JWT\Exceptions\UnsupportedAlgorithmExceptiontoEncryption\Security\JWT\Exceptions\UnsupportedAlgorithmExceptionSecurity\JWT\Exceptions\ValidatorExceptiontoEncryption\Security\JWT\Exceptions\ValidatorExceptionSecurity\JWT\Signer\AbstractSignertoEncryption\Security\JWT\Signer\AbstractSignerSecurity\JWT\Signer\HmactoEncryption\Security\JWT\Signer\HmacSecurity\JWT\Signer\NonetoEncryption\Security\JWT\Signer\NoneSecurity\JWT\Signer\SignerInterfacetoEncryption\Security\JWT\Signer\SignerInterfaceSecurity\JWT\Token\AbstractItemtoEncryption\Security\JWT\Token\AbstractItemSecurity\JWT\Token\EnumtoEncryption\Security\JWT\Token\EnumSecurity\JWT\Token\ItemtoEncryption\Security\JWT\Token\ItemSecurity\JWT\Token\ParsertoEncryption\Security\JWT\Token\ParserSecurity\JWT\Token\SignaturetoEncryption\Security\JWT\Token\SignatureSecurity\JWT\Token\TokentoEncryption\Security\JWT\Token\TokenSecurity\JWT\BuildertoEncryption\Security\JWT\BuilderSecurity\JWT\ValidatortoEncryption\Security\JWT\ValidatorSecurity\JWT\ValidatortoEncryption\Security\JWT\ValidatorSecurity\ExceptiontoEncryption\Security\ExceptionSecurity\RandomtoEncryption\Security\Random#15729
- Moved
- Renamed
Phalcon\Crypt\Crypt::getHashAlgo()toPhalcon\Crypt\Crypt::getHashAlgorithm()Phalcon\Crypt\Crypt::getAvailableHashAlgos()toPhalcon\Crypt\Crypt::getAvailableHashAlgorithms()Phalcon\Crypt\Crypt::setHashAlgo()toPhalcon\Crypt\Crypt::setHashAlgorithm()#15717
- Renamed
Phalcon\Factory\AdapterFactory::getAdapters()toPhalcon\Factory\AdapterFactory::getServices()#15717 - Changed
Phalcon\Crypt\Crypt::__construct()to haveuseSigningset totrueby default #15717 - Changes to
Phalcon\Config- Moved
Phalcon\ConfigtoPhalcon\Config\Config - Changed
Phalcon\Config\Config::pathby making thedelimiterparameter astring - Changed
Phalcon\Config\Adapter\Ini::__constructto not acceptnullas the mode. The default is nowINI_SCANNER_NORMAL(2) - Refactored the code for more efficiency and speed #15720
- Moved
- Changed
Phalcon\Db\Adapter\AdapterInterface::getInternalHandler()andPhalcon\Db\Adapter\Pdo\AbstractPdo::getInternalHandler()to returnvarinstead of\PDOfor custom adapters with different engines #15119 - Moved
Phalcon\FiltertoPhalcon\Filter\Filter; added more tests #15726 - Changed
Phalcon\Mvc\Model::getPreparedQuery()to returnQueryInterfaceinstead ofQuery#15562 - Moved
Phalcon\CachetoPhalcon\Cache\Cache#15728 - Changed
Phalcon\Factory\AdapterFactoryto define the factory exception ingetExceptionClass()instead of a property. #15728 - Renamed
Phalcon\Db\Adapter\AbstractAdapter::getSqlVariables()toPhalcon\Db\Adapter\AbstractAdapter::getSQLVariables()to align with the rest of thegetSQL*methods #15637 - Moved
Phalcon\LoggertoPhalcon\Logger\Logger#15727 - Changes to
Phalcon\Escaper- Moved
Phalcon\EscapertoPhalcon\Html\Escaper - Moved
Phalcon\Escaper\EscaperInterfacetoPhalcon\Html\Escaper\EscaperInterface - Moved
Phalcon\Escaper\ExceptiontoPhalcon\Html\Escaper\Exception - Deprecated methods (to be removed at a future version)
escapeCss()becomescss()escapeJs(), becomesjs()escapeHtml()becomeshtml()escapeHtmlAttr()becomesattributes()escapeUrl()becomesurl()setHtmlQuoteType()becomessetFlags()#15757
- Moved
- Changed
Phalcon\Encryption\Security::hash()to also usepassword_hash()and acceptARGON2*algorithms #15731 - Removed uncamelize of
realClassNameinPhalcon\Mvc\Router\Route::getRoutePaths()if definition is string to make processing same as if array definition #15067 - Changed
Phalcon\Validation::getValue()behavior to get value fromdataif not found inentity. #14203 - Changed
Phalcon\Forms\Form::isValid()signature: addedwhitelistargument. #14203 - Changed
Phalcon\Support\Collection\ReadOnlytoPhalcon\Support\Collection\ReadOnlyCollectionto avoid conflicts with the read-only feature in PHP 8.1 #15767 - Removed
Phalcon\Text- replaced byPhalcon\Support\Helper\Str\*#15776 - Removed
Phalcon\Helper\Arr- replaced byPhalcon\Support\Helper\Arr\*#15776 - Removed
Phalcon\Helper\File- replaced byPhalcon\Support\Helper\File\*#15776 - Removed
Phalcon\Helper\Json- replaced byPhalcon\Support\Helper\Json\*#15776 - Removed
Phalcon\Helper\Number- replaced byPhalcon\Support\Helper\Number\*#15776 - Removed
Phalcon\Helper\Str- replaced byPhalcon\Support\Helper\Str\*#15776 - Removed references to
Phalcon\Text,Phacon\Helper\*from the code replacing it withPhalcon\Support\Helper\*#15776 - Synchronized tests with
phalcon/phalconthus increasing coverage #15776 - Changed
Phalcon\Assets\Managerto require aPhalcon\Html\TagFactoryin its constructor #15776
Added
- Added more tests in the suite for additional code coverage #15691
- Added
Phalcon\Events\AbstractEventsAwareclass to handle the Events Manager when necessary #15691 - Added
Phalcon\Acl\Adapter\AdapterInterface::getInheritedRoles()andPhalcon\Acl\Adapter\Memory::getInheritedRoles()that returns the inherited roles based on a passed role name (or all if no parameter supplied) #15154 - Changes to
Phalcon\Crypt- Added
Phalcon\Crypt\Padding\PadIntefaceand padding adaptersPhalcon\Crypt\Padding\AnsiPhalcon\Crypt\Padding\Iso10126Phalcon\Crypt\Padding\IsoIekPhalcon\Crypt\Padding\NoopPhalcon\Crypt\Padding\PadInterfacePhalcon\Crypt\Padding\Pkcs7Phalcon\Crypt\Padding\SpacePhalcon\Crypt\Padding\Zero
- Added
Phalcon\Crypt\PadFactoryto easily create padding adapters - Added more tests increasing coverage #15717
- Added
- Added
Phalcon\Cache\Adapter\*::setForever()andPhalcon\Storage\Adapter\*::setForever()to allow storing a key forever #15485 - Added
Phalcon\Encryption\Security::getHashInformation()to return information for a hash #15731 - Added constants
Phalcon\Encryption\Security::CRYPT_ARGON2IandPhalcon\Encryption\Security::CRYPT_ARGON2ID#15731 - Added
allowEmptychecks to common validators #15515 - Added
Phalcon\Forms\Form::getFilteredValue()to get filtered value without providing entity #15438 - Added
Phalcon\Forms\Form::setWhitelist()andPhalcon\Forms\Form::getWhitelist()#14203 - Added
dirtyStateserialization inPhalcon\Mvc\Model#15571 - Added short versions of helpers for
Phalcon\Html\TagFactory(call service as a method) #15776 - Added short versions of helpers for
Phalcon\Support\HelperFactory(call service as a method) #15776 - Added
Phalcon\Html\Helper\Doctypehelper fordoctypegeneration #15776 - Added
styleorlinktag option forPhalcon\Html\Helper\Style#15776
Fixed
- Fixed
Query::getExpression()return type #15553 - Fixed
Phalcon\Mvc\Model::getRelated()to correctly return relationships (cached or not) when the foreign key has changed #15649 - Fixed
Phalcon\Db\Adapter\Pdo\*,Phalcon\Mvc\ModelandPhalcon\Mvc\Model\MetaData\Strategy\Annotationsto treatBIGINTnumbers as string #15632 - Fixed
Phalcon\Crypt\Crypt::decrypt()to correctly calculate the hash when using signed mode #15717 - Fixed
Phalcon\Mvc\Model\Manager::isVisibleModelProperty()to correctly check if setting property is visible #15276 - Fixed
Phalcon\Config\Config::mergeto retain numeric indexes in deep merges #14705 - Fixed globals (Zephir change) to correctly display string values for global settings in
phpinfo()#15269 - Fixed
Phalcon\Storage\Adapter\Redis::getAdapter()andPhalcon\Cache\Adapter\Redis::getAdapter()to accept the connection timeout in the constructoroptions#15744 - Fixed
Phalcon\Db\Adapter\AbstractAdapter::getSQLVariables()to return an empty array when initialized #15637 - Fixed
Phalcon\Cache\Adapter\*andPhalcon\Storage\Adapter\*to delete a key whenset()is called with a zero or negative TTL #15485 - Fixed
Phalcon\Db\Adapter\Pdo\Mysqlto not usePDO::ATTR_EMULATE_PREPARESandPDO::ATTR_STRINGIFY_FETCHESby default. This allows numbers to be returned with resultsets instead of strings for numeric fields #15361 - Fixed
Phalcon\Validation\Validator\Fileto usemessageFileEmpty#14928 - Fixed
Phalcon\Db\RawValueusage bugs inPhalcon\Mvc\Model::doLowUpdate()#15413 - Fixed
typeattribute for stylesheet links #15776 - Fixed
Phalcon\Debugto not throw an exception if a URL service is not present #15381
Removed
- Removed
Phalcon\Kernel- obsolete #15776
Chat - Q&A
Support
Social Media
Videos
<3 Phalcon Team