You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Alignment with v6; docblocks; sorting; return types; minor fixes (image watermark opacity calc, serializer/helpers, readonly-becoming-mutable, ACL local access). #17055
Changed return types to -> <static> or -> <self> in various components. The change is a covariant narrowing on implementation methods and does not touch any interface contracts, so userland classes that implement Phalcon interfaces and return the interface type continue to work unchanged. #17035
Internal performance work across Autoload, Dispatcher, Annotations, Db, Mvc\Model, Mvc\Model\Query, Tag, Assets, Acl\Adapter\Memory, Http\Request, Encryption\Crypt. Behavior preserved. #17049
Moved CI tools/scripts in resources/ removed unused ones #17066
Refactored docker images (more flexible less cruft) #17066
Reorganization of quality tool config files (in resources/) #17066
Phalcon\Autoload\Loader getters (getDirectories, getExtensions, getFiles) return arrays keyed by the value string instead of by a SHA256 hash of it; iteration order and contents are unchanged. #17049[doc]
Phalcon\Mvc\Router\Route::getCompiledHostName() now uses cache for hostname/converters. #17012[doc]
Added
Added a new dependency-injection container under Phalcon\Container, with its contracts under Phalcon\Contracts\Container. It adds:
Phalcon\Container\Container / Phalcon\Container\ContainerFactory - the container and its factory, configured through Phalcon\Contracts\Container\Service\Provider providers (Phalcon\Container\Provider\Web, Phalcon\Container\Provider\Cli).
Phalcon\Container\Definition\ServiceDefinition - fluent service definitions with autowiring, factories, extenders, tags, aliases, and configurable service lifetimes (Phalcon\Container\Definition\ServiceLifetime).
Phalcon\Container\Resolver\Resolver - reflection-based constructor / method / parameter autowiring, plus the Phalcon\Container\Resolver\Lazy\* family for lazy resolution (Get, GetCall, NewInstance, Call, Env, CsEnv, ArrayValues, etc.).
Added a new authentication and authorization layer under Phalcon\Auth, with its contracts under Phalcon\Contracts\Auth. Built on top of Phalcon\Container, it adds:
Phalcon\Auth\Manager / Phalcon\Auth\ManagerFactory - the central manager that wires guards and access gates together, and its factory.
Phalcon\Auth\AuthUser - a lightweight user value object returned by array-backed adapters when no application model class is configured.
Guards under Phalcon\Auth\Guard - Session and Token (with AbstractGuard and UserRemember), resolved via Phalcon\Auth\Guard\GuardLocator and configured through Phalcon\Auth\Guard\Config\* (AbstractGuardConfig, SessionGuardConfig, TokenGuardConfig).
Adapters under Phalcon\Auth\Adapter - Memory, Model, and Stream user providers (with AbstractAdapter and AbstractArrayAdapter), resolved via Phalcon\Auth\Adapter\AdapterLocator and configured through Phalcon\Auth\Adapter\Config\* (AbstractAdapterConfig, MemoryAdapterConfig, ModelAdapterConfig, StreamAdapterConfig).
Access gates under Phalcon\Auth\Access - Auth and Guest (with AbstractAccess), resolved via Phalcon\Auth\Access\AccessLocator.
Dispatcher listeners Phalcon\Auth\Mvc\AuthDispatcherListener and Phalcon\Auth\Cli\AuthDispatcherListener (with Phalcon\Auth\AbstractAuthDispatcherListener) to guard MVC and CLI dispatch.
Phalcon\Support\AbstractLocator - the shared service-locator base extended by the guard, adapter, and access locators. #16273[doc]
Added granular exception classes across the framework. Every namespace that previously surfaced failures through a single umbrella Phalcon\<Namespace>\Exception (or its sub-namespace counterpart) now ships per-cause classes under a sibling Exceptions/ folder. Each new class extends the existing per-namespace parent so catch (Phalcon\<Namespace>\Exception $e) continues to work unchanged. New classes:
Added Phalcon\Mvc\Router::useCache() - to use a Phalcon\Cache adapter to store routes #17012[doc]
Fixed
Fixed $this->eventsManager resolving to null inside Phalcon\Mvc\Controller methods #17060[doc]
Fixed Phalcon\Events\Event and Phalcon\Events\Manager::fire() being declared final in 5.13.0 (#17006), which prevented subclassing the events manager. #17065[doc]
Fixed Phalcon\Forms\Form::clear() leaving a previously-bound null field value in the data array instead of unsetting it before reassigning the element default #17042[doc]
Fixed Phalcon\Mvc\Model::getChangedFields() / hasChanged() flagging every null-valued column of a freshly-loaded row as changed #17042[doc]
Fixed Phalcon\Mvc\Model::getUpdatedFields() flagging unchanged null-valued columns as updated #17042[doc]
Fixed Phalcon\Mvc\Model\Row::offsetGet() / offsetExists() throwing The index does not exist in the row when accessing a column whose value is null#17041[doc]
Fixed Phalcon\Mvc\Router::handle() falling back to a default catch-all route instead of matching an HTTP-method-constrained route attached afterward. #17062[doc]
Fixed Phalcon\Mvc\View::getContent() throwing TypeError after View::start(). start() was assigning $this->content = null#17041[doc]
Fixed Phalcon\Mvc\View\Engine\Volt\Compiler emitting invalid PHP when a double-quoted Volt string contained literal single quotes (e.g. "send_ga('Link', ...)"). Only un-escaped single quotes are now escaped, so the 'Let\'s Encrypt' case from #17002 is preserved #17046[doc]
Fixed warning in Phalcon\Auth\ManagerFactory emitted in tests (random commit but had to be fixed) #17066
Reverted the Phalcon\Mvc\Model\Query::executeUpdate() named-placeholder substitution introduced for #16976. The substitution path was triggering a use-after-free in the model update flow under PostgreSQL (#17042). Issue #16976 is reopened and will be addressed with a different approach. [doc]