4.0.0-rc.2 (2019-10-26)
- Added
castparameter toPhalcon\Collection::getandPhalcon\Helper\Arr::getallowing developers to cast the result returned to the type they want to. #14465 - Added
Phalcon\Paginator\Repository::jsonSerialize()implementingJsonSerializable#14475 - Added
Phalcon\Logger::getLogLevel()andPhalcon\Logger::setLogLevel()setting the minimum log level for the logger #14480
- Changed all calls to
new <object>to use thecreate_instanceorcreate_instance_paramsfor better performance. #14419 - Changed the exception text for
Phalcon\Mvc\Model::getChangedFieldsandPhalcon\Mvc\Model::getUpdatedFieldswhen 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\Modelto accept0,nulland""as valid parameter forfindByField(),findFirstByField()andcountByField(). #14467
- 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\AbstractAdapteruseAdapterInterfaceinstead of non existingAbstractAdapter#14414 - Fixed
Phalcon\Cache\CacheFactoryusePsr\SimpleCache\CacheInterfaceinstead of non existingPhalcon\Cache\CacheInterface#14414 - Fixed
Phalcon\Cache\CacheFactoryusePsr\SimpleCache\CacheInterfaceinstead of non existingPhalcon\Cache\CacheInterface#14414 - Fixed
Phalcon\Cli\Routeradd missingPhalcon\Cli\Router\RouteInterface#14414 - Fixed
Phalcon\Dispatcher\AbstractDispatcher::setModelBinder()to return DispatcherInterface instead of non existing Dispatcher: #14414 Phalcon\Firewall\Adapter\AclPhalcon\Firewall\Adapter\Annotations- Fixed
Phalcon\Filter\FilterFactory::newInstance()to returnFilterInterfaceinstead of non existingLocatorInterface#14414 - Fixed
Phalcon\Forms\Element\Select::addOption()andPhalcon\Forms\Element\Select::setOption()to returnElementInterfaceinstead of non existing Element #14414 - Fixed
Phalcon\Forms\Manager::set()to returnManagerinstead of non existingFormManager#14414 - Fixed
Phalcon\Paginator\Adapter\AbstractAdapter::setCurrentPage()Phalcon\Paginator\Adapter\AbstractAdapter::setLimit()Phalcon\Paginator\Adapter\AbstractAdapter::setRepository()to returnAdapterInterfaceinstead of non existingAdapter#14414- Fixed
Phalcon\Translate\TranslateFactory::set()to returnAdapterInterfaceinstead of non existingAbstractAdapter#14414 - Fixed
Phalcon\Filterto properly work with closures #14417 - Fixed
Phalcon\Form::setAction()throwing error when called inForm::initialize()#14421 - Fixed
Phalcon\Mvc\Model\Query\Lang::parsePHQLreturn type hint fromstringtoarray - Fixed
NOT BETWEENsupport in PHQL #14253 - Fixed
Phalcon\Storage\Adapter\Streamto correctly serialize and unserialize data #14408 - Fixed
Phalcon\Storage\Serializer\Jsonto throw an exception if storing an object #14408 - Fixed
Phalcon\Http\Message\ServerRequestFactory::loadto correctly handle superglobals that have not been defined #14426 - Fixed
Phalcon\Forms\Formto initialize attributes object if not initialized #14430 - Fixed
Phalcon\Http\Message\ServerRequestFactory::loadto correctly detect the protocol passed from$_SERVER#14432 - Fixed
Phalcon\Cli\Router\Routeadded missingPhalcon\Cli\Router\RouteInterface - Fixed incorrect return types on
Phalcon\Mvc\View\Engine\AbstractEngine::partialandPhalcon\Mvc\View\Engine\EngineInterface::partial#14429 - Fixed
Phalcon\Firewall\Adapter\AbstractAdapter::getRoleCallbackandPhalcon\Firewall\Adapter\AbstractAdapter::setRoleCallbackto correctly accept and return aClosure#14450 - Fixed
Phalcon\Firewall\Adapter\AdapterInterface::getRoleCallbackandPhalcon\Firewall\Adapter\AbstractAdapter::setRoleCallbackto correctly accept and return aClosure#14450 - Fixed
Phalcon\Events\Event::__constructorto correctly accept anobjectas thesourceparameter #14449 - Fixed
Phalcon\Cache::checkKey()added.to key characters pattern #14457 - Fixed
Phalcon\Mvc\Model\Managerto store reusable related records correctly. #14444 - Fixed
Phalcon\Mvc\Model::__call()not to throw an exception when the return value isnullfor related records. #14444 - Fixed
Phalcon\Logger\Adapter\Syslog::__construct()incorrect receipt of theoptionfrom theoptionsparameter. #14470 - Fixed
Phalcon\Events\Manager::fireandPhalcon\Events\ManagerInterface::firecorrectly aligning parameters and types. #14477 - Fixed
Phalcon\Translate\*aligningparametersasarraywith the interpolator calls. #14477 - Fixed
Phalcon\Storage\AdapterFactory:newInstanceto return the correct interface #14481 - Fixed
Phalcon\Mvc\Dispatcher:forwardto accept an array vs a mixed variable #14481 - Fixed
Phalcon\Mvc\Model::_doLowUpdateandPhalcon\Mvc\Model::_doLowInsertthrowing errors about column mapping whenphalcon.orm.ignore_unknown_columnsis setOn#14485
- Removed
Phalcon\Application\AbstractApplication::handle()as it does not serve any purpose and causing issues with type hinting. #14407 - Removed
getEventsManagerandsetEventsManagerfromPhalcon\Di\Injectableto the classes that utilise the methods oreventsManagerproperty. #14269
4.0.0-rc.1 (2019-09-23)
- 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
Phalcon\Url::getto use implementation behindPhalcon\Helper\Str::reduceSlashesto 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\Managerto usePhalcon\Di\AbstractDiAwarefor container functionality #14351 - Changed
Phalcon\Securityto allowsessionandrequestin the constructor #14351 - Changed
Phalcon\Session\Managerto allowrouterin the constructor #14351 - Changed
Phalcon\Flash\Directto allowescaperin the constructor #14349 - Changed
Phalcon\Flash\Sessionto allowescaperin the constructor #14349 - Changed
Phalcon\Di\AbstractDIAwaretoPhalcon\Di\AbstractInjectionAware#14359 - Changed
Phalcon\Di\Serviceto use DI to initializestringbased services when possible #14342 - Changed
Phalcon\Mvc\Router\Annotationsto be able to handle patterns az prefixes #14259 - Changed
Phalcon\Mvc\Router\Group::routesto an array as default #14259 - Changed
Phalcon\Mvc\Model::assignchanged order of parameters to $data, $whiteList, $dataColumnMap #14386 - Changed
Phalcon\Helper\Arr::arrayToObjecttotoObject#14389 - Changed
Phalcon\Events\EventsAwareInterface::getEventsManagerandPhalcon\Di\Injectable::getEventsManagerto return alsonull#14404 - Changed
Phalcon\Logger\Adapter\AbstractAdapter::addto now returnthis#14404 - Changed
Phalcon\Mvc\RouterInterfacemethods signature to returnRouteInterfaceinstead ofvoid:Phalcon\Mvc\RouterInterface::setDefaultActionPhalcon\Mvc\RouterInterface::setDefaultActionPhalcon\Mvc\RouterInterface::setDefaultControllerPhalcon\Mvc\RouterInterface::setDefaultModulePhalcon\Mvc\RouterInterface::setDefaults
- Changed return types for following interfaces:
Phalcon\Mvc\Router\RouteInterface::setNamefromvoidtoRouteInterfacePhalcon\Mvc\Router\RouteInterface::viafromvoidtoRouteInterfacePhalcon\Session\ManagerInterface::__getfromvoidtovar
- Fixed
Phalcon\Helper\Str::includesto return correct result #14301 - Fixed
Phalcon\Loggermoved to correct namespace #14263 - Fixed
Phalcon\Session\Adapter\AbstractAdapter::read()to return ""(empty string) whenSession/Adapter/*::get()returns null #14314 - Fixed
Phalcon\Cache\Exceptionto extend Phalcon\Exception - Fixed
Phalcon\Cache\InvalidArgumentExceptionto extend Phalcon\Exception - Fixed
Phalcon\Collection\Exceptionto extend Phalcon\Exception - Fixed
Phalcon\Storage\Adapter\AbstractAdapter::initSerializerto 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\Streamto not override configured save path #14265 - Fixed
Phalcon\Http\Response::setFileToSendto properly handle non-ASCII filenames #13919 - Fixed
Phalcon\Security::getSessionTokenreturn value #14346 - Fixed
Phalcon\Flash\*interfaces formessage()to returnstring/null#14349 - Fixed
Phalcon\Paginator\Adapter\AbstractAdapterthrow exception iflimit <= 0#14303 - Fixed
Phalcon\Mvc\Model\Query\BuilderEmpty table alias in query #14366 - Fixed
Phalcon\Db\Adapter\PdoFactoryto reference the correct interface #14381 - Fixed
Phalcon\Db\Dialect\MysqlFixed missing schema in constraint for create table #14378 - Fixed
Phalcon\Mvc\Model::hasChanged()andgetChangedFields()returning false values whencastOnHydrateoption 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::setDefaultActionPhalcon\Application\AbstractApplication::setEventsManagerPhalcon\Firewall\Adapter\AbstractAdapter::setAlwaysResolvingRolePhalcon\Firewall\Adapter\AbstractAdapter::setEventsManagerPhalcon\Mvc\Router::handlePhalcon\Storage\Serializer\AbstractSerializer::getDataPhalcon\Storage\Serializer\AbstractSerializer::setDataPhalcon\Mvc\Dispatcher::forwardPhalcon\Mvc\Model::setConnectionServicePhalcon\Mvc\Model::setReadConnectionServicePhalcon\Mvc\Model::setWriteConnectionServicePhalcon\Mvc\Model\Query\Builder::setDIPhalcon\Mvc\Router\Annotations::handlePhalcon\Session\Bag::setPhalcon\Session\Manager::remove
- Fixed
Phalcon\Di::remove()to remove service. #14396
- Removed
Phalcon\Plugin- duplicate ofPhalcon\Di\Injectable#14359 - Removed
Phalcon\Mvc\Collectionand 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
voidreturn type for all constructors #14401
4.0.0-beta.2 (2019-08-18)
- Fixed missing imports in
Phalcon\Db\Adapter\AbstractAdapter,Phalcon\Db\Adapter\AdapterInterface,Phalcon\Db\Result\Pdo,Phalcon\Html\TagandPhalcon\Tag\Select. #14249 - Fixed
isSerializableinPhalcon\Storage\Serializer\AbstractSerializerto return true when the data is seriazable and false when it's not. - Fixed
Phalcon\Storage\Adapter\Redis::delete()andPhalcon\Storage\Adapter\Redis::getKeys()deprecated warning from php-redis #14281 - Fixed
Phalcon\Mvc\Model\ResultSet::Update()to return correct status #14291 Phalcon\Mvc\Collection::cancelOperation()now returnstrueon success.- Fixed
Phalcon\Application\AbstractApplicationinterfaces forregisterModules(),setDefaultModule()andsetEventsManager()#14293 - Fixed
Phalcon\Paginator\Adapter\QueryBuilderto throw exception on incorrect parameter #14299
- Removed dead libsodium-related code. It was never called in PHP >= 7.0.
4.0.0-beta.1 (2019-07-14)
- Added
Phalcon\Factory\Exceptionfor factory exceptions. #13672 - Added
Phalcon\Filter\FilterInterfacefor 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\Payloadto 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 aServerRequestobject from globals. #14154 - Added
saslAuthDataas option toPhalcon\Storage\Adapter\Libmemcachedto authenticate using SASL #13394 - Added
Phalcon\Collection\ReadOnly: Read only collection. #14154 - Added
whiteList()toPhalcon\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
- Renamed
Phalcon\Annotations\Adapter\FilestoPhalcon\Annotations\Adapter\Stream. #13672 - Renamed
Phalcon\Annotations\AdaptertoPhalcon\Annotations\Adapter\AbstractAdapter. #13672 - Renamed
Phalcon\Annotations\AdapterInterfacetoPhalcon\Annotations\Adapter\AdapterInterface. #13672 - Renamed
Phalcon\Annotations\FactorytoPhalcon\Annotations\AnnotationsFactory. #13672 - Renamed
Phalcon\Config\FactorytoPhalcon\Config\ConfigFactory. #13672 - Renamed
Phalcon\Filter\FilterLocatortoPhalcon\Filter\Filter. #13672 - Renamed
Phalcon\Filter\FilterLocatorFactorytoPhalcon\Filter\FilterFactory. #13672 - Renamed
Phalcon\Image\AdaptertoPhalcon\Image\Adapter\AbstractAdapter. #13672 - Renamed
Phalcon\Image\AdapterInterfacetoPhalcon\Image\Adapter\AdapterInterface. #13672 - Renamed
Phalcon\Paginator\AdaptertoPhalcon\Paginator\Adapter\AbstractAdapter. #13672 - Renamed
Phalcon\Paginator\AdapterInterfacetoPhalcon\Paginator\Adapter\AdapterInterface. #13672 - Renamed
Phalcon\Paginator\FactorytoPhalcon\Paginator\PaginatorFactory. #13672 - Renamed
Phalcon\Translate\AdaptertoPhalcon\Translate\Adapter\AbstractAdapter. #13672 - Renamed
Phalcon\Translate\AdapterInterfacetoPhalcon\Translate\Adapter\AdapterInterface. #13672 Phalcon\Pluginis now abstract.- Moved
methodparameter inPhalcon\Mvc\Model\Manager::getRelationRecords()to the last position. #14115 - Moved
methodparameter inPhalcon\Mvc\Model\Manager::getBelongsToRecords()to the last position. #14115 - Moved
methodparameter inPhalcon\Mvc\Model\Manager::getHasOneRecords()to the last position. #14115 - Moved
methodparameter inPhalcon\Mvc\Model\Manager::getHasManyRecords()to the last position. #14115 - Validator messages were moved into each validator. #13208
Phalcon\Paginator\Repository::getProperty()now usesPhalcon\Helper\Arr::get().- Refactored
Phalcon\Collectionto allow conditional key case sensitivity. #14154 - Refactored
Phalcon\Registryto align with thePhalcon\Collectioninterface. #14154 Phalcon\Mvc\Micro::setModelBinder()now uses the Factory Default DI if none is set. #14171Phalcon\Mvc\Model\ValidationFailednow works withModelInterface.- Refactored
Phalcon\Configto extendPhalcon\Collection#13201, #13768 - Renamed
Phalcon\Configto extendPhalcon\Config\Config#13201, #13768 - Renamed
Phalcon\AcltoPhalcon\Acl\Enum#14213 - Renamed
Phalcon\Acl\AdaptertoPhalcon\Acl\Adapter\AbstractAdapter#14213 - Renamed
Phalcon\Acl\AdapterInterfacetoPhalcon\Acl\Adapter\AdapterInterface#14213 - Renamed
Phalcon\ApplicationtoPhalcon\Application\AbstractApplication#14213 - Renamed
Phalcon\CryptInterfacetoPhalcon\Crypt\CryptInterface#14213 - Renamed
Phalcon\Db\AdaptertoPhalcon\Db\Adapter\AbstractAdapter#14213 - Renamed
Phalcon\Db\AdapterInterfacetoPhalcon\Db\Adapter\AdapterInterface#14213 - Renamed
Phalcon\DbtoPhalcon\Db\AdapterDb#14213 - Renamed
Phalcon\Db\Adapter\PdotoPhalcon\Db\Adapter\Pdo\AbstractPdo#14213 - Renamed
Phalcon\DispatchertoPhalcon\Dispatcher\AbstractDispatcher#14213 - Renamed
Phalcon\DispatcherInterfacetoPhalcon\Dispatcher\DispatcherInterface#14213 - Renamed
Phalcon\EscaperInterfacetoPhalcon\Escaper\EscaperInterface#14213 - Renamed
Phalcon\Firewall\AdaptertoPhalcon\Firewall\Adapter\AbstractAdapter#14213 - Renamed
Phalcon\Firewall\AdapterInterfacetoPhalcon\Firewall\Adapter\AdapterInterface#14213 - Renamed
Phalcon\FlashtoPhalcon\Flash\AbstractFlash#14213 - Renamed
Phalcon\FlashInterfacetoPhalcon\Flash\FlashInterface#14213 - Renamed
Phalcon\Forms\ElementtoPhalcon\Forms\Element\AbstractElement#14213 - Renamed
Phalcon\Forms\ElementInterfacetoPhalcon\Forms\Element\ElementInterface#14213 - Renamed
Phalcon\ImagetoPhalcon\Image\Enum#14213 - Renamed
Phalcon\Mvc\View\EnginetoPhalcon\Mvc\View\Engine\AbstractEngine#14213 - Renamed
Phalcon\Mvc\View\EngineInterfacetoPhalcon\Mvc\View\Engine\EngineInterface#14213 - Renamed
Phalcon\UrlInterfacetoPhalcon\Url\UrlInterface - Renamed
Phalcon\ValidatortoPhalcon\Validation\Validator#14213 - Renamed
Phalcon\Validator\ValidatortoPhalcon\Validation\AbstractValidator#14213 - Renamed
Phalcon\Validator\ValidatorCompositetoPhalcon\Validation\AbstractValidatorComposite#14213 - Renamed
Phalcon\Validator\CombinedFieldsValidatortoPhalcon\Validation\AbstractCombinedFields#14213 - Renamed
Phalcon\Validator\Validator\File\FileAbstracttoPhalcon\Validation\Validator\File\AbstractFile#14213
- Fixed
Phalcon\Mvc\View::getRender()to callview->finish()instead ofob_end_clean(). #14095 - Fixed
Phalcon\Cache\Adapter\Libmemcachedfailing to set values whenPhalcon\Mvc\Model\MetaData\Libmemcachedwas in use. #14100 - Fixed
Phalcon\Db\Columnto recognizetinyint,smallint,mediumint,integeras valid autoIncrement columns. #14102 - Fixed
methodparameter inPhalcon\Mvc\Model\Manager::getRelationRecords(), it's not always a string, null by default. #14115 - Fixed
methodparameter inPhalcon\Mvc\Model\Manager::getBelongsToRecords(), it's not always a string, null by default. #14115 - Fixed
methodparameter inPhalcon\Mvc\Model\Manager::getHasOneRecords(), it's not always a string, null by default. #14115 - Fixed
methodparameter inPhalcon\Mvc\Model\Manager::getHasManyRecords(), it's not always a string, null by default. #14115 - Fixed
handlersproperty inPhalcon\Mvc\Micro\Collectionto 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 iform.exception_on_failed_metadata_saveis set to true. #13433 - Fixed
Phalcon\Image\Adapter\Gdto throw an error withimagecolorat. #14139 Phalcon\Mvc\Model\Criteria::limit()now corrects negative offsets.Phalcon\Di\FactoryDefault\Clican now use the new Filter system.- Fixed
Phalcon\Mvc\Routernow parses and uses path. #14087 - Fixed various areas in
Phalcon\Acl\AdapterandPhalcon\Acl\Adapter\Memoryincluding comments, logic,denyComponentAccessandAdapterInterface. Added tests. #13870 - Fixed
Phalcon\Config::merge()not merging numeric values properly #13201, #13768 - Fixed
Phalcon\Validation\Validator\File\AbstractFilemissing the resolution of thevalueproperty #14198 - Fixed
Phalcon\Storage\Adapter\Stream#14190 Phalcon\Form\Form::clear()now correctly clears single fields. #14217- Fixed
Phalcon\Form\Form::getValue()not to callgetAttributes()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
Phalcon\Session\Factory. #13672 - Removed
Phalcon\FactoryandPhalcon\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
4.0.0-alpha.5 (2019-05-18)
- Added
Phalcon\Cli\Router\Route::setDescription()to sets the route's description #13936 - Added
Phalcon\Cli\Router\Route::getDescription()returns the route's description #13936 - Added
Phalcon\Image\Adapter\Gd::getVersion(). - Added
chunk(),first(),firstKey(),flatten(),group(),isUnique(),last(),lastKey(),order(),pluck(),sliceLeft(),sliceRight(),split(),tail(),validateAll(),validateAny()toPhalcon\Helper\Arr#13954 - Added
camelize(),concat(),countVowels(),decapitalize(),dynamic(),endsWith(),firstStringBetween(),includes(),increment(),isAnagram(),isLower(),isPalindrome(),isUpper(),lower(),random(),reduceSlashes(),startsWith(),uncamelize(),underscore(),upper()toPhalcon\Helper\Str#13954 - Added
Phalcon\Mvc\Model\Query\BuilderInterface::getModels()returns the models involved in the query - Added
addConnect(),addPurge()andaddTrace()toPhalcon\Mvc\Router\Groupand its interface. #14001 - Added
Phalcon\Mvc\Model\Transaction::throwRollbackException()which allows a transaction to throw an exception or not on a rollback. #13949 - Added
Phalcon\Cacheclass implementing PSR-16. Introducing:Phalcon\Cache\AdapterPhalcon\Cache\Adapter\ApcuPhalcon\Cache\Adapter\LibmemcachedPhalcon\Cache\Adapter\MemoryPhalcon\Cache\Adapter\RedisPhalcon\Cache\Adapter\Stream
Phalcon\Cache\AdapterFactory: Factory to create adaptersPhalcon\Cache\CacheFactory: Factory to create cache objects #13439
- Added
Str::dirSeparator()to ensure a path has a trailing slash #13439 - Added assets versioning
Phalcon\Assets\Manager:addCss,Phalcon\Assets\Manager::addJs,Phalcon\Assets\Collection:addCss,Phalcon\Assets\Collection:addJsaccepts two additional parameters -versionandautoVersion#12591 - Added setting
orm.resultset_prefetch_recordsinstructing the ORM (resultset) to prefetch the rows if the rows returned are less or equal to the setting. #13387 - Added
Phalcon\Mvc\View::toString()to return the rendered view as a string #13825 - Added
Phalcon\Helper\Arr::arrayToObject()to convert arrays to objects. - Added
Phalcon\Firewallcomponent #13648 - Added
orm.cast_last_insert_id_to_intoption forPhalcon\Mvc\Model::setup()(castLastInsertIdToInt) to cast thelastInsertIdonsave()toint#13002 - Added
Attributescollection class like a new Html component #13646 - Added
AttributesintoPhalcon\Forms\Form#13646
- Refactored
Phalcon\Events\Managerto only useSplPriorityQueueto store events. #13924 Phalcon\Translate\InterpolatorInterfacenow only accepts placeholder arrays. #13939Phalcon\Dispatcher::forward()andPhalcon\Dispatcher::setParams()now require an array as a parameter. #13935- CLI Routes with bad class names (eg.
MyApp\\Tasks\\) now throw an exception instead of suppressing the error. #13936 - Refactored
Phalcon\Mvc\Collection\Behavior\SoftDeleteandPhalcon\Mvc\Model\Behavior\SoftDelete. #13930 - Model methods that extend Model Manager functionality are now
final. #13950 - Changed
Phalcon\Textto call methods fromPhalcon\Helper\Str#13954 - Setting the views directory no longer requires a trailing slash when using Simple View.
Phalcon\Mvc\View\Simple::viewParamsis now always an array.Phalcon\Mvc\View\Simple::render()paramsproperty is now always an array.Phalcon\Mvc\Model\CriteriaInterface::limit()now takesoffsetas an integer. #13977- Changed
Phalcon\Mvc\Model\Manager::getModelSource()to usesetModelSource()internally instead of setting the source manually #13987 - The property
optionsis always an array inPhalcon\Mvc\Model\Relation. #13989 Phalcon\Logger\Adapter\AbstractAdapter::process()is now actually abstract. #14012Phalcon\Mvc\ModelInterface::getRelated()return type declaration has changed (not alwaysResultsetInterface) #14035- In
Phalcon\Mvc\Model, relations fetched using magic methods are now handled byPhalcon\Mvc\Model::getRelated()internally. #14035 - Changed
Phalcon\Mvc\Model\Transaction::rollback()to not throw a transaction by default. #13949 - Changed
Phalcon\Cachenamespace and relevant classes to handle storing data to different stores. Introducing:Phalcon\Storage\Serializeroffering classes that implement the\Serializableinterface.Phalcon\Storage\Serializer\Base64Phalcon\Storage\Serializer\IgbinaryPhalcon\Storage\Serializer\JsonPhalcon\Storage\Serializer\MsgpackPhalcon\Storage\Serializer\NonePhalcon\Storage\Serializer\PhpPhalcon\Storage\Serializer\SerializerInterface
Phalcon\Storage\SerializerFactory: Factory to create serializersPhalcon\Storage\Adapteroffering classes that implement thePhalcon\Storage\Adapter\AdapterInterfaceinterface.Phalcon\Storage\Adapter\ApcuPhalcon\Storage\Adapter\LibmemcachedPhalcon\Storage\Adapter\MemoryPhalcon\Storage\Adapter\RedisPhalcon\Storage\Adapter\Stream
Phalcon\Storage\AdapterFactory: Factory to create adapters #13439
- Changed
Phalcon\Mvc\Model\Queryto not callnumRowswhen selecting data #13387 - Bind parameters and bind types are now always arrays in
Phalcon\Mvc\Model\Query. - Changed
Phalcon\Validation\Validator\Urlto work with passed options. (FILTER_FLAG_PATH_REQUIRED,FILTER_FLAG_QUERY_REQUIRED) #13548 Phalcon\Mvc\Model\Query\Builderwill now omit offsets if they are set as 0.Phalcon\Mvc\Model\Transaction::__construct()service parameter must be a string or omitted.Phalcon\Logger\Formatter\Line::__construct()service parameters must be a string or omitted.Phalcon\Logger\Formatter\Json::__construct()service parameters must be a string or omitted.- Removed deprecated code from
Phalcon\Forms\Form::getMessages(). - Loading a Module (either MVC or CLI) now throws an exception if the path does not exists regardless of whether the class is already loaded.
- Changed
Phalcon\Cryptto accept auth tag, tag length and data for "gcm" and "ccm" modes. Removed insecure algorithms with modes:des*,rc2*,rc4*,des*,*ecb#13869 - Changed
Phalcon\Mvc\Modelto copy the unset default values from theMetaDatato theModelafter a successful insert. #13781 - Changed
Phalcon\Mvc\Model::findFirst()now returnsnull.Phalcon\Mvc\Model::getRelated()for one to one relationships returnsnull#14044
- Fixed
Mvc\Collection::isInitialized()now works as intended. #13931 - Update docblocks to show that we can no longer assign properties via
save()in models (as per #12317). #13945 - Fixed
Mvc\ModelandMvc\ModelInterfacefindFirstto returnModelInterfaceorbool#13947 Phalcon\Acl\Adapter\Memory::dropComponentAccess()now properly unsets values.- Volt options 'separator' and 'extension' now work again. #13971
- Query Builder's
GROUP BYfield is now always an array. #13962 - Renamed
Phalcon\Paginator\Adapter::getPaginate()topaginate()in documentation/tests (originally renamed in 4.0.0-alpha.1). #13973 - Fixed the exception message in
Phalcon\Security::computeHmac()by removing"%s"from output. Phalcon\Mvc\Model\Relation::isForeignKey()now returns false if theforeignKeyoption is set tofalse.- Fixed
Phalcon\Flash\Session::output()not to throw an exception when there are no messages stored in session. #14023 - Fixed
Phalcon\Config\Adapter\Ini()to handle arrays correctly in .ini files. #14025 - Fixed non-reusable relations in
Phalcon\Mvc\Model, now returning fresh records. #13531 Phalcon\Mvc\Model::isRelationshipLoaded()is now working for every type of relations. #14035- Fixed
Phalcon\Mvc\Model::writeAttribute()to handle associative arrays correctly. #14021 - Fixed
Phalcon\Html\Tag::appendTitle()andPhalcon\Html\Tag::prependTitle()to mirrorPhalcon\Tag. #14039 - Fixed
Phalcon\Validation::validate()withcancelOnFail. The validator will validate all elements and will stop processing validators on a per element basis ifcancelOnFailis present. #13149 - Fixed
Phalcon\Mvc\Models\Manager::getRelations()to return the many-to-many relationships also. #10839 - Fixed
Phalcon\Validation\Validator\Numericality::validate()to parse nonenlocale numbers. #13843 - Fixed
Phalcon\Mvc\Model::save()failing after a successful insert when default database fields are not updated. #13781
- Removed
arrayHelpersproperty from the Volt compiler. #13925 - Removed legacy (PHP <5.5) code from GD image adapter.
- Removed support for HTTP_CONTENT_TYPE header (a bug in PHP 5). #14013
- Removed
Mvc\Model\MetaData\Sessionadapter (no longer supported) #13439 - Removed
Phalcon\Cache,Phalcon\Cache\Backend,Phalcon\Cache\BackendInterface,Phalcon\Cache\Backend\Apcu,Phalcon\Cache\Backend\Factory,Phalcon\Cache\Backend\File,Phalcon\Cache\Backend\Libmemcached,Phalcon\Cache\Backend\Memory,Phalcon\Cache\Backend\Mongo,Phalcon\Cache\Backend\Redis,Phalcon\Cache\Frontend,Phalcon\Cache\Frontend\Base64,Phalcon\Cache\Frontend\Data,Phalcon\Cache\Frontend\Factory,Phalcon\Cache\Frontend\Igbinary,Phalcon\Cache\Frontend\Json,Phalcon\Cache\Frontend\Msgpack,Phalcon\Cache\Frontend\None,Phalcon\Cache\Frontend\Output,Phalcon\Cache\FrontendInterface,Phalcon\Cache\Multiple#13439 - Removed caching from the view (simple/view)
Phalcon\Mvc\View::cache()Phalcon\Mvc\View::getCache()Phalcon\Mvc\View\Simple::cache()Phalcon\Mvc\View\Simple::getCache()#13439
- Removed multiple Cache Adapter
Phalcon\Cache\Multiple#13439 - Removed old cache classes
Phalcon\Cache\BackendPhalcon\Cache\BackendInterfacePhalcon\Cache\Backend\ApcuPhalcon\Cache\Backend\FactoryPhalcon\Cache\Backend\FilePhalcon\Cache\Backend\LibmemcachedPhalcon\Cache\Backend\MemoryPhalcon\Cache\Backend\MongoPhalcon\Cache\Backend\RedisPhalcon\Cache\FrontendPhalcon\Cache\FrontendInterfacePhalcon\Cache\Frontend\Base64Phalcon\Cache\Frontend\DataPhalcon\Cache\Frontend\FactoryPhalcon\Cache\Frontend\IgbinaryPhalcon\Cache\Frontend\JsonPhalcon\Cache\Frontend\MsgpackPhalcon\Cache\Frontend\NonePhalcon\Cache\Frontend\Output#13439
- Removed model namespace aliases
Phalcon\Model\Manager::registerNamespaceAlias()Phalcon\Model\Manager::getNamespaceAlias()Phalcon\Model\Manager::getNamespaceAliases()Phalcon\Model\ManagerInterface::getNamespaceAlias()Phalcon\Model\ManagerInterface::registerNamespaceAlias()
4.0.0-alpha.4 (2019-03-31)
- Added
delimiterandenclosureoptions to Phalcon\Translate\Adapter\Csv constructor - Added
Phalcon\Http\Message\*namespace implementing PSR-7 and PSR-17. Introducing:Phalcon\Http\Message\RequestPhalcon\Http\Message\RequestFactoryPhalcon\Http\Message\ResponsePhalcon\Http\Message\ResponseFactoryPhalcon\Http\Message\ServerRequestPhalcon\Http\Message\ServerRequestFactoryPhalcon\Http\Message\StreamPhalcon\Http\Message\StreamFactoryPhalcon\Http\Message\UploadedFilePhalcon\Http\Message\UploadedFileFactoryPhalcon\Http\Message\UriPhalcon\Http\Message\UriFactoryPhalcon\Http\Message\Stream\InputPhalcon\Http\Message\Stream\MemoryPhalcon\Http\Message\Stream\TempThe implementation offers PSR-7/PSR-17 compatible components in a different namespace to allow usage of bothRequestandResponseimplementations for this version. #11789
- Added
Phalcon\Helper\*namespace, offering easy manipulations for arrays, numbers etc..Phalcon\Helper\ArrPhalcon\Helper\Number#13889
- Added
Phalcon\Collection, an object implementingArrayAccess,Countable,IteratorAggregate,JsonSerializable,Serializable, offering an easy way to handle collections of data such as arrays, superglobals etc. #13886 - Added
Phalcon\Collection, inPhalcon\Http\Message\RequestandPhalcon\Http\Message\ServerRequestto handle the headers #13907
- Fixed
Phalcon\Image\Adapter\Imagick::_watermark,setImageAlpha()fills the alpha channel with black before execution (replaced byevaluateImage()). Improved imagick compatibility. #13911 - Fixed Assets Manager hard reference to \Phalcon\Tag, should use DI #12261
- Fixed
Annotations\Reader::parseto always return an array #13923
- Refactored
Phalcon\Registryto use thePhalcon\Collectionclass #13893 - Refactored
Phalcon\Session\Bagto use thePhalcon\Collectionclass #13893 - Refactored almost all files of the project to abide by the new coding standard for Phalcon. Certain files have been intentionally left untouched because they will be replaced later on. #13915
- Removed
Phalcon\Session\BagInterface#13893
4.0.0-alpha.3 (2019-02-31)
- Added
view:afterCompileandview:beforeCompileevents for the Volt compiler #2182 - Added array merge support to
Phalcon\Config::merge - Added
setBlacklistinPhalcon\Debugto allow the developer to "blacklist" certain variables from the$_REQUESTor$_SERVERsuperglobals being displayed on screen #13687
- Fixed router and controller parameter inconsistencies (camelize etc.) #13555
- Fixed
invalid opcodeinphalcon.sowhen using docker #13143 - Fixed storing related model data in
Phalcon\Messages\Message. The method is nowsetMetadataand can be used to store any metadata from any component that emits messages #13811 - Fixed Dispatcher calling camelize twice and producing incorrect results #12829
- Fixed
Phalcon\Mvc\Model:findFirstto throw an exception when the passed parameter for a primary key is not an array, string or numeric #13336 - Added
Phalcon\Http\ResponseInterface::isSent, that was already used. #13836
- Changed view engine service closures to no longer receive the dependency injector as the second parameter. Instead use
$thisfor the DI. #11926 - Renamed
Phalcon\Acl\SubjecttoPhalcon\Acl\Component#13808 - Renamed
Phalcon\Acl\SubjectInterfacetoPhalcon\Acl\ComponentInterface#13808 - Renamed
Phalcon\Acl\SubjectAwaretoPhalcon\Acl\ComponentAware#13808 - Renamed
Phalcon\Acl\OperationtoPhalcon\Acl\Role#13808 - Renamed
Phalcon\Acl\OperationInterfacetoPhalcon\Acl\RoleInterface#13808 - Renamed
Phalcon\Acl\OperationAwaretoPhalcon\Acl\RoleAware#13808 - Renamed
Phalcon\Acl\AdapterInterface::addOperationtoPhalcon\Acl\AdapterInterface::addRole#13808 - Renamed
Phalcon\Acl\AdapterInterface::isOperationtoPhalcon\Acl\AdapterInterface::isRole#13808 - Renamed
Phalcon\Acl\AdapterInterface::isSubjecttoPhalcon\Acl\AdapterInterface::isComponent#13808 - Renamed
Phalcon\Acl\AdapterInterface::addSubjecttoPhalcon\Acl\AdapterInterface::addComponent#13808 - Renamed
Phalcon\Acl\AdapterInterface::addSubjectAccesstoPhalcon\Acl\AdapterInterface::addComponentAccess#13808 - Renamed
Phalcon\Acl\AdapterInterface::dropSubjectAccesstoPhalcon\Acl\AdapterInterface::dropComponentAccess#13808 - Renamed
Phalcon\Acl\AdapterInterface::getActiveOperationtoPhalcon\Acl\AdapterInterface::getActiveRole#13808 - Renamed
Phalcon\Acl\AdapterInterface::getActiveSubjecttoPhalcon\Acl\AdapterInterface::getActiveComponent#13808 - Renamed
Phalcon\Acl\AdapterInterface::getOperationsstoPhalcon\Acl\AdapterInterface::getRoles#13808 - Renamed
Phalcon\Acl\AdapterInterface::getSubjectstoPhalcon\Acl\AdapterInterface::getComponents#13808 - Renamed
Phalcon\Acl\Adapter::getActiveOperationtoPhalcon\Acl\AdapterInterface::getActiveRole#13808 - Renamed
Phalcon\Acl\Adapter::getActiveSubjecttoPhalcon\Acl\AdapterInterface::getActiveComponent#13808 - Renamed
Phalcon\Acl\Adapter\Memory::addOperationtoPhalcon\Acl\Adapter\Memory::addRole#13808 - Renamed
Phalcon\Acl\Adapter\Memory::isOperationtoPhalcon\Acl\Adapter\Memory::isRole#13808 - Renamed
Phalcon\Acl\Adapter\Memory::isSubjecttoPhalcon\Acl\Adapter\Memory::isComponent#13808 - Renamed
Phalcon\Acl\Adapter\Memory::addSubjecttoPhalcon\Acl\Adapter\Memory::addComponent#13808 - Renamed
Phalcon\Acl\Adapter\Memory::addSubjectAccesstoPhalcon\Acl\Adapter\Memory::addComponentAccess#13808 - Renamed
Phalcon\Acl\Adapter\Memory::dropSubjectAccesstoPhalcon\Acl\Adapter\Memory::dropComponentAccess#13808 - Renamed
Phalcon\Acl\Adapter\Memory::getOperationsstoPhalcon\Acl\Adapter\Memory::getRoles#13808 - Renamed
Phalcon\Acl\Adapter\Memory::getSubjectstoPhalcon\Acl\Adapter\Memory::getComponents#13808 - Renamed
Phalcon\Mvc\UrltoPhalcon\Url#13742 - Renamed
Phalcon\Mvc\UrlInterfacetoPhalcon\UrlInterface#13742 - Renamed
Phalcon\Mvc\Url\ExceptiontoPhalcon\Url\Exception#13742
- Removed the CSS/JS minifiers. This affects the Assets\Filter classes. For now the classes return the original content. #13819, #10118
- Removed
Phalcon\Queuenamespace and tests. Beanstalkd is near being abandoned. A new Queue component/adapter will be implemented for queueing needs of the community. #13364
4.0.0-alpha.2 (2019-02-02)
- Added
notFound()method inPhalcon\Translate\Adapter\NativeArraywhich returns the key requested if not found. The method can be overridden when extending the class, returning what the developer needs #13007 - Added
Phalcon\Service\Locator,Phalcon\Service\LocatorInterfaceandPhalcon\Service\LocatorFactoryInterfaceto 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,nameetc.). You can then retrieve the automatically sanitized values usingPhalcon\Http\Request::getFilteredQuery,Phalcon\Http\Request::getFilteredPostandPhalcon\Http\Request::getFilteredPut#13488
- Fixed
Phalcon\Mvc\Micro::handleto properly return a response object #13712 - Fixed
Phalcon\Cache\Backend\Libmemcachedreturning "empty" values being asnullwhen they could be0,falseor emptystring. #13497 - Fixed session adapters to properly implement
SessionHandlerInterface::write - Fixed
Phalcon\Session\Managerto not interact with$_SESSIONvariable if the session has not been started #13718, #13520 - Fixed
Phalcon\Cli\Consoleclass not found error if handling the same module twice #13724 - Fixed
Phalcon\Cache\Backend\Libmemcachedreturning "empty" values being asnullwhen they could be0,falseor emptystring. #13497 - Fixed
Phalcon\Mvc\View\Engine\Volt\Compiler::functionCallbuilding the incorrect code for the following tags;select, andselect_static#13459 - Fixed
Phalcon\Tag\Selectnot rendering without any options.
- Changed the
Phalcon\Tag::renderTitle()parameters such asPhalcon\Tag::getTitle()#13706 - Changed the
Phalcon\Html\Tag::renderTitle()parameters such asPhalcon\Html\Tag::getTitle()#13706 - Changed the
Phalcon\Version::get()to follow semantic versioning #13720 - Changed the
Phalcon\Translate\Adapter\NativeArrayto accept a new parameter in the constructortriggerError. This will trigger an error if the key is not found #13007 - Changed the default action of
Phalcon\Acl\Memoryto beAcl::DENYinstead ofAcl::ALLOW#13758 - Changed
Phalcon\Mvc\User\PlugintoPhalcon\Plugin#13749 - Changed
Phalcon\Exceptionto implement\Throwableinterface.#13750 - Changed
Phalcon\Http\Cookie. ThehttpOnlyproperty is no longer initialised with a value #13464 - Changed the default action for no arguments of
Phalcon\Acl\Memoryto beAcl::DENYinstead ofAcl::ALLOW#13769 - Changed handling of
Phalcon\Config\Adapter\Grouped::_construct()when receiving an configuration file as a string from thearrayConfigparameter to automatically attempt and the parameterdefaultAdapteris set to an empty string, to determine the adapter from the file extension, producing the same behaviour asPhalcon\Config\Factory::load()#13762
- Removed
Phalcon\Mvc\User\Component,Phalcon\Mvc\User\ModuleandPhalcon\Mvc\User\Plugin#13749
4.0.0-alpha1 (2018-12-25)
- Added CODE_OF_CONDUCT for the project
- Added
Phalcon\Db\Adapter\Pdo\Postgresql::describeReferencesto implement custom Postgresql rules 438 - Added
Phalcon\Mvc\Router\RouteInterface::convertso that callingPhalcon\Mvc\Router\Group::addwill return an instance that hasconvertmethod #13380 - Added
Phalcon\Mvc\ModelInterface::getModelsMetaData#13070 - Added
Phalcon\Validation\Validator\Ip, class used to validate ip address fields. It allows to validate a field selecting IPv4 or IPv6, allowing private or reserved ranges and empty values if necessary. #13574 - Added
Phalcon\Messages\MessageInterface,Phalcon\Messages\Message,Phalcon\Messages\ExceptionandPhalcon\Messages\Messagesto handle all messages for the application (model/validation) #13114 - Added
getHandlerSuffix(),setHandlerSuffix()in Dispatcher,getTaskSuffix(),setTaskSuffix()in the CLI Dispatcher #13468 - Added ability to set a custom template for the Flash Messenger. #13445
- Added
forUpdatein the Sqlite dialect to override the method from the base dialect. #13539 - Added
TYPE_ENUMin the Mysql adapter. #11368 - Added more column types for the Mysql adapter. The adapter supports
TYPE_BIGINTEGER,TYPE_BIT,TYPE_BLOB,TYPE_BOOLEAN,TYPE_CHAR,TYPE_DATE,TYPE_DATETIME,TYPE_DECIMAL,TYPE_DOUBLE,TYPE_ENUM,TYPE_FLOAT,TYPE_INTEGER,TYPE_JSON,TYPE_JSONB,TYPE_LONGBLOB,TYPE_LONGTEXT,TYPE_MEDIUMBLOB,TYPE_MEDIUMINTEGER,TYPE_MEDIUMTEXT,TYPE_SMALLINTEGER,TYPE_TEXT,TYPE_TIME,TYPE_TIMESTAMP,TYPE_TINYBLOB,TYPE_TINYINTEGER,TYPE_TINYTEXT,TYPE_VARCHAR#13151, #12223, #524, #13225 @zGaron, #12523 @Studentsov, #12471 @ruudboon - Added
Phalcon\Acl\Adapter\Memory::addRolesupport multiple inherited #13557 - Added
Phalcon\Tag::renderTitle()that renders the title enclosed in<title>tags. #13547 - Added
hasHeader()method toPhalcon\Http\Responseto provide the ability to check if a header exists. #12189 - Added global setting
orm.case_insensitive_column_mapto attempt to find value in the column map case-insensitively. Can be also enabled by settingcaseInsensitiveColumnMapkey in\Phalcon\Mvc\Model::setup(). #11802 - Added the ability to use FrontendInterface to serialize Model and ResultSet - Inject a
serializerobject which implementsFrontendInterfacein DI to use it. #12808 - Added
Phalcon\Mvc\Model\Query\BuilderInterface::offset#13599 - Added
Phalcon\Http\Response\Cookies::getCookies#13591 - Added
Phalcon\Mvc\Model::isRelationshipLoadedto check if relationship is loaded #12772 - Added an easy way to work with Phalcon and run the tests locally, using nanobox.io #13578
- Added response handler to
Phalcon\Mvc\Micro,Phalcon\Mvc\Micro::setResponseHandler, to allow use of a custom response handler. #12452 - Added two new events
response::beforeSendHeadersandresponse::afterSendHeaderstoPhalcon\Http\Response#10689 - Added a retainer for the current token to be used during the checkings, so when
Phalcon\Security::getTokenis called the token used for checkings don't change. #12392 - Added
Phalcon\Html\Tag, a component that creates HTML elements. It will replacePhalcon\Tagin a future version. This component does not use static method calls. #12392 - Added
Phalcon\Paginator\RepositoryInterfacefor repository the current state ofpaginatorand also optional sets the aliases for properties repository #10985, #10957 - Added bind support to
Phalcon\Mvc\Model\Query\Builder. The Query Builder has the same methods asPhalcon\Mvc\Model\Query;getBindParams,setBindParams,getBindTypesandsetBindTypes. #13368 - Added
Phalcon\Html\Breadcrumbs, a component that creates HTML code for breadcrumbs. #13680 - Added more methods to interfaces.
Phalcon\Cli\Router\RouteInterface-delimiter,getDelimiterPhalcon\Cli\DispatcherInterface-setOptions,getOptionsPhalcon\Db\AdapterInterface-fetchColumn,insertAsDict,updateAsDictPhalcon\Db\DialectInterface-registerCustomFunction,getCustomFunctions,getSqlExpressionPhalcon\Di\ServiceInterface-getParameter,isResolvedPhalcon\Events\ManagerInterface-hasListenersPhalcon\Mvc\Model\Query\BuilderInterface-distinct,getDistinct,forUpdate,offset,getOffsetPhalcon\Mvc\Model\Transaction\ManagerInterface-setDbService,getDbService,setRollbackPendent,getRollbackPendentPhalcon\Mvc\Model\CriteriaInterface-distinct,leftJoin,innerJoin,rightJoin,groupBy,having,cache,getColumns,getGroupBy,getHaving,Phalcon\Mvc\Model\ManagerInterface-isVisibleModelProperty,keepSnapshots,isKeepingSnapshots,useDynamicUpdate,isUsingDynamicUpdate,addHasManyToMany,existsHasManyToMany,getRelationRecords,getHasManyToManyPhalcon\Mvc\Model\MessageInterface-setModel,getModel,setCode,getCodePhalcon\Mvc\Model\QueryInterface-getSingleResult,setBindParams,getBindParams,setBindTypes,setSharedLock,getBindTypes,getSqlPhalcon\Mvc\Model\RelationInterface-getParamsPhalcon\Mvc\Model\ResultsetInterface-setHydrateMode,getHydrateMode,getMessages,update,delete,filterPhalcon\Mvc\ModelInterface-getModelsMetaDataPhalcon\Session\AdapterInterface-setId,statusPhalcon\Validation\MessageInteraface-getCode,setCodePhalcon\CryptInterface-setPaddingPhalcon\Mvc\RouterInterface-attach#12676
- Added
Phalcon\Container, a proxy container class to thePhalcon\Diimplementing PSR-11 #12295 - Added
Phalcon\Acl\Adapter\Memory::getActiveKey,Phalcon\Acl\Adapter\Memory::activeFunctionCustomArgumentsCountandPhalcon\Acl\Adapter\Memory::getActiveFunctionto get latest key, number of custom arguments, and function used to acquire access #12547
- Now Phalcon requires the PSR PHP extension to be installed and enabled
- By configuring
prefixandstatsKeythePhalcon\Cache\Backend\Redis::queryKeysno longer returns prefixed keys, now it returns original keys without prefix. #13656 - The
Phalcon\Mvc\Application,Phalcon\Mvc\MicroandPhalcon\Mvc\Routernow must have a URI to process #12380 - Response headers and cookies are no longer prematurely sent #12378
- You can no longer assign data to models whilst saving them #12317
- The
Phalcon\Mvc\Model\Manager::loadno longer reuses already initialized models #12317 - Changed
Phalcon\Db\Dialect\Postgresql::describeReferencesto generate correct SQL, added "on update" and "on delete" constraints 438 - Changed catch
ExceptiontoThrowable#12288 - Changed
Phalcon\Mvc\Model\Query\Builder::addFromto remove third parameter$with#13109 Phalcon\Forms\Form::clearwill no longer callPhalcon\Forms\Element::clear, instead it will clear/set default value itself, andPhalcon\Forms\Element::clearwill now callPhalcon\Forms\Form::clearif it's assigned to the form, otherwise it will just clear itself. #13500Phalcon\Forms\Form::getValuewill now also try to get the value by callingTag::getValueor element'sgetDefaultmethod before returningnull, andPhalcon\Forms\Element::getValuecallsTag::getDefaultonly if it's not added to the form. #13500- Changed
Phalcon\Mvc\Modelto use thePhalcon\Messages\Messageobject for its messages #13114 - Changed
Phalcon\Validation\*to use thePhalcon\Messages\Messageobject for its messages #13114 - Collections now use the Validation component #12376
- Made the
specialKey(_PHCR) optional for thePhalcon\Cache\Backend\Redisadapter #10905, #11608 - Refactored
Phalcon\Db\Adapter\Pdo::queryto use PDO's prepare and execute.Phalcon\Db\Adapter::fetchAllto use PDO's fetchAll #13515 - Fixed
\Phalcon\Http\Response::setFileToSendfilename last much _ #13496 - Changed
Phalcon\Tag::getTitle. It returns only the text. It acceptsprepend,appendbooleans to prepend or append the relevant text to the title. #13547 - Changed
Phalcon\Di\Serviceconstructor to no longer takes the name of the service. #13590 - Changed
Phalon\Tag::textAreato usehtmlspecialcharsto prevent XSS injection. #12428 - Changed
Phalon\Cache\Backend\*::getto use only positive numbers forlifetime11759 - Changed
Phalcon\Loggerto comply with PSR-3. The component has been rewritten to use adapters that alllow logging to different areas. The #13438 - Renamed
Phalcon\Assets\Resourcenamespace toPhalcon\Assets\Asset#12082 - Renamed
Phalcon\Assets\ResourcetoPhalcon\Assets\Asset#12082 - Renamed
Phalcon\Assets\ResourceInterfacetoPhalcon\Assets\AssetInterface#12082 - Renamed
Phalcon\Assets\Manager::addResourcetoPhalcon\Assets\Manager::addAsset#12082 - Renamed
Phalcon\Assets\Manager::addResourceByTypetoPhalcon\Assets\Manager::addAssetByType#12082 - Renamed
Phalcon\Assets\Manager::collectionResourcesByTypetoPhalcon\Assets\Manager::collectionAssetsByType#12082 - Changed
paginatein the place ofgetPaginate. Addedpreviousin the place ofbefore. #13492 - Scope SQL Column Aliases (on nesting level), in
Phalcon\Mvc\Model\Query, to prevent overwrite root query's_sqlColumnAliasesby sub-queries. #13006, #12548 and #1731 - CLI parameters now work like MVC parameters #12375
- Changed
Phalcon\Db\Dialect\Postgresql::addPrimaryKeyto make primary key constraints names unique by prefixing them with the table name. #12629 - Fixed
Phalcon\Mvc\Model\Query::_prepareSelectoverwriting columns with the same alias #13552 - Changed
Phalcon\Http\RequestInterfaceto align withPhalcon\Http\Request#13061 - Renamed
Phalcon\Acl\ResourcetoPhalcon\Acl\Subject#13639 - Renamed
Phalcon\Acl\ResourceInterfacetoPhalcon\Acl\SubjectInterface#13639 - Renamed
Phalcon\Acl\ResourceAwaretoPhalcon\Acl\SubjectAware#13639 - Renamed
Phalcon\Acl\RoletoPhalcon\Acl\Operation#13639 - Renamed
Phalcon\Acl\RoleInterfacetoPhalcon\Acl\OperationInterface#13639 - Renamed
Phalcon\Acl\RoleAwaretoPhalcon\Acl\OperationAware#13639 - Renamed
Phalcon\Acl\AdapterInterface::addRoletoPhalcon\Acl\AdapterInterface::addOperation#13639 - Renamed
Phalcon\Acl\AdapterInterface::isRoletoPhalcon\Acl\AdapterInterface::isOperation#13639 - Renamed
Phalcon\Acl\AdapterInterface::isResourcetoPhalcon\Acl\AdapterInterface::isSubject#13639 - Renamed
Phalcon\Acl\AdapterInterface::addResourcetoPhalcon\Acl\AdapterInterface::addSubject#13639 - Renamed
Phalcon\Acl\AdapterInterface::addResourceAccesstoPhalcon\Acl\AdapterInterface::addSubjectAccess#13639 - Renamed
Phalcon\Acl\AdapterInterface::dropResourceAccesstoPhalcon\Acl\AdapterInterface::dropSubjectAccess#13639 - Renamed
Phalcon\Acl\AdapterInterface::getActiveRoletoPhalcon\Acl\AdapterInterface::getActiveOperation#13639 - Renamed
Phalcon\Acl\AdapterInterface::getActiveResourcetoPhalcon\Acl\AdapterInterface::getActiveSubject#13639 - Renamed
Phalcon\Acl\AdapterInterface::getRolesstoPhalcon\Acl\AdapterInterface::getOperations#13639 - Renamed
Phalcon\Acl\AdapterInterface::getResourcestoPhalcon\Acl\AdapterInterface::getSubjects#13639 - Renamed
Phalcon\Acl\Adapter::getActiveRoletoPhalcon\Acl\AdapterInterface::getActiveOperation#13639 - Renamed
Phalcon\Acl\Adapter::getActiveResourcetoPhalcon\Acl\AdapterInterface::getActiveSubject#13639 - Renamed
Phalcon\Acl\Adapter\Memory::addRoletoPhalcon\Acl\Adapter\Memory::addOperation#13639 - Renamed
Phalcon\Acl\Adapter\Memory::isRoletoPhalcon\Acl\Adapter\Memory::isOperation#13639 - Renamed
Phalcon\Acl\Adapter\Memory::isResourcetoPhalcon\Acl\Adapter\Memory::isSubject#13639 - Renamed
Phalcon\Acl\Adapter\Memory::addResourcetoPhalcon\Acl\Adapter\Memory::addSubject#13639 - Renamed
Phalcon\Acl\Adapter\Memory::addResourceAccesstoPhalcon\Acl\Adapter\Memory::addSubjectAccess#13639 - Renamed
Phalcon\Acl\Adapter\Memory::dropResourceAccesstoPhalcon\Acl\Adapter\Memory::dropSubjectAccess#13639 - Renamed
Phalcon\Acl\Adapter\Memory::getRolesstoPhalcon\Acl\Adapter\Memory::getOperations#13639 - Renamed
Phalcon\Acl\Adapter\Memory::getResourcestoPhalcon\Acl\Adapter\Memory::getSubjects#13639 - Changed
Phalcon\Http\Response::setHeadersnow merges the headers with any pre-existing ones in the internal collection #12836 - Changed
Phalcon\Di\FactoryDefaultto not load by default - Changed the
Phalcon\Sessionnamespace by refactoring the component.Phalcon\Session\Manageris now the single component offering session manipulation by using adapters. Each adapter implements PHP'sSessionHandlerInterface. Available adapters arePhalcon\Session\Adapter\Files,Phalcon\Session\Adapter\Libmemcached,Phalcon\Session\Adapter\NoopandPhalcon\Session\Adapter\Redis. #12833, #11341, #13535 - Fixed
Phalcon\Mvc\Modelsmagic method (setter) is fixed for arrays #13661 - Fixed
Phalcon\Mvc\Model::skipAttributesandPhalcon\Mvc\Model::allowEmptyColumnsallowEmptyStrings & skipAttributes repsect the column mapping. #12975, #13477
- PHP < 7.2 no longer supported
- Removed
xcachesupport from adapters #13628 - Removed
apcsupport from adapters (useapcu) #13628 - Removed
memcachesupport from adapters (uselibmemcached) #13628 - Removed deprecated
Phalcon\Annotations\Adapter\Apc - Removed deprecated
Phalcon\Annotations\Adapter\Xcache - Removed deprecated
Phalcon\Cache\Backend\Apc - Removed deprecated
Phalcon\Cache\Backend\Memcache - Removed deprecated
Phalcon\Cache\Backend\Xcache - Removed deprecated
Phalcon\Cli\Console::addModules - Removed deprecated
Phalcon\Debug::getMajorVersion - Removed deprecated
Phalcon\Mvc\Model\Criteria::addWhere - Removed deprecated
Phalcon\Mvc\Model\Criteria::order - Removed deprecated
Phalcon\Mvc\Model\Metadata\Apc - Removed deprecated
Phalcon\Mvc\Model\Metadata\Memcache - Removed deprecated
Phalcon\Mvc\Model\Metadata\Xcache - Removed deprecated
Phalcon\Mvc\View::getParams - Removed deprecated
Phalcon\Mvc\ViewInterface::getParams - Removed deprecated
Phalcon\Paginator\Adapter\Model::getPaginate - Removed deprecated
Phalcon\Paginator\Adapter\Model - $before - Removed deprecated
Phalcon\Paginator\Adapter\Model - $total_pages - Removed deprecated
Phalcon\Paginator\Adapter\NativeArray::getPaginate - Removed deprecated
Phalcon\Paginator\Adapter\NativeArray - $before - Removed deprecated
Phalcon\Paginator\Adapter\NativeArray - $total_pages - Removed deprecated
Phalcon\Paginator\Adapter\QueryBuilder::getPaginate - Removed deprecated
Phalcon\Paginator\Adapter\QueryBuilder - $before - Removed deprecated
Phalcon\Paginator\Adapter\QueryBuilder - $total_pages - Removed deprecated
Phalcon\Security::hasLibreSsl - Removed deprecated
Phalcon\Security::getSslVersionNumber - Removed deprecated
Phalcon\Validation\Validator::isSetOption - Removed
Phalcon\Cli\Console::addModulesin favor ofPhalcon\Cli\Console::registerModules - Removed
Phalcon\Debug::getMajorVersiondue to the fact that we never use this method - Removed
Phalcon\Dispatcher::setModelBindingin favor ofPhalcon\Dispatcher::setModelBinder - Removed
Phalcon\Http\RequestInterface::isSecureRequestin favor ofPhalcon\Http\RequestInterface::isSecure - Removed
Phalcon\Http\RequestInterface::isSoapRequestedin favor ofPhalcon\Http\Request::isSoap - Removed
Phalcon\Logger\Multiple - Removed
Phalcon\Mvc\Collection::validationHasFailed - Removed
Phalcon\Mvc\Model\Criteria::orderin favor ofPhalcon\Mvc\Model\Criteria::orderBy - Removed
Phalcon\Mvc\Model\Validator\*in favor ofPhalcon\Validation\Validator\* - Removed
Phalcon\Mvc\Micro\Lazyloader::__callin favor ofPhalcon\Mvc\Micro\Lazyloader::callMethod - Removed
Phalcon\Model::reset#12317 - Removed
Phalcon\Validation\MessageandPhalcon\Mvc\Model\Messagein favor ofPhalcon\Messages\Message - Removed
Phalcon\Validation\MessageInterfaceandPhalcon\Mvc\Model\MessageInterfacein favor ofPhalcon\Messages\MessageInterface - Removed
Phalcon\Validation\MessageandPhalcon\Mvc\Model\Messagein favor ofPhalcon\Messages\Message - Removed
Phalcon\Validation\Message\Groupin favor ofPhalcon\Messages\Messages - Removed calling
Phalcon\Mvc\Collection::validatewith object of typePhalcon\Mvc\Model\ValidatorInterface