All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[Unreleased] v0.28.0
Linna\Cache\RedisCacheclass to cache data on Redis- Tests using Postgresql in GithubActions
Linna\Authorization\ExistsByIdInterfaceinterfaceLinna\Authorization\ExistsByNameInterfaceinterfaceLinna\Authorization\PermissionExtendedclassLinna\Authorization\PermissionExtendedMapperInterfaceinterfaceLinna\Authorization\RoleExtendedclassLinna\Authorization\RoleExtendedMapperInterfaceinterfaceLinna\Authorization\RoleTraittraitLinna\Authorization\UserExtendedclassLinna\Authorization\UserExtendedMapperInterfaceinterfaceLinna\Authorization\UserTraittrait
Linna\CryptonamespaceLinna\Crypto\KeyPairclassLinna\Crypto\PublicKeyCryptoclassLinna\Crypto\SecretKeyCryptoclass
Linna\DataMapper\DomainObjectAbstract->hasId()method, use it to check if a domain object has the id setLinna\DataMapper\DomainObjectAbstract->hasNotId()method, the opposite ofhadId()Linna\DataMapper\ExceptionnamespaceLinna\DataMapper\Exception\NullDomainObjectExceptionexception
Linna\Session\EncryptedSessionHandlerclass, a decorator to provide a encryption layer to other handlersLinna\Session\PdoSessionHandlerclass to unifyMysqlPdoSessionHandlerPgsqlPdoSessionHandler`Linna\Session\PdoSessionHandlerQueryInterfaceinterfaceLinna\Session\PdoSessionHandlerMysqlQueryclassLinna\Session\PdoSessionHandlerPostgreQueryclass
Linna\Authentication\Passwordnow use internally libosudium functions for password hashingLinna\Authentication\Password->__construct()now hasint $opsLimitandint $memLimitwith default values set to2and67108864as argumentsLinna\Authentication\Usermoved under the namespaceLinna\Authorization
- Tests with Paratest
- Cache TTL handling improved
Linna\Cache\MemcachedCache->__construct()now requires only options about memcached server/servers
- The id of a
DomainObjectAbstractis nowint|stringto use both a numeric id and a string uuid, this change has been reflected on all classes that use these values Linna\DataMapper\NullDomainObjectnow throw aNullDomainObjectExceptionwhen try to set or get the object idLinna\DataMapper\UUID4class renamed toUuid4to respect class naming concention
Linna\Mvc\Modelis now anabstractclassLinna\Mvc\Viewis now anabstractclassLinna\Mvc\Controlleris now anabstractclass
Linna\Authentication\Authentication->Login()method now is safe against timing attacks
Linna\Session\Sessiondouble cookie header when new session starts
Linna\Authorization\RoleToUserMapperInterfaceclass
Linna\Session\MysqlPdoSessionHandlerclassLinna\Session\PgsqlPdoSessionHandlerclass
v0.27.0 - 2022-09-17
Linna\Authentication\Exception\AuthenticationExceptionnow extendLinna\Router\Exception\RedirectException
Linna\Authorization\ExceptionnamespaceLinna\Authorization\Exception\AuthorizationExceptionexception
Linna\Container\Container::RULE_INTERFACEpublic constant, use it in rules for resolve interfacesLinna\Container\Container::RULE_ARGUMENTpublic constant, use it in rules for resolve other arguments
Linna\DataMapper\DomainObjectAbstract->createdpublic propertyLinna\DataMapper\DomainObjectAbstract->lastUpdatepublic propertyLinna\DataMapper\DomainObjectAbstract->idprotected property accessible via__get()method
Linna\Router\Router->parseQueryStringOnRewriteModeOnprotected propertyparseQueryStringOnRewriteModeOnas valid option for constructor
Linna\Session\PgsqlSessionHandlerclassLinna\Session\Session->getSessionName()methodLinna\Session\Session->getSessionId()methodLinna\Session\Session->getStatus()method
Linna\Shared\AbstractAccessTraittraitLinna\Shared\ArrayAccessTraittraitLinna\Shared\PropertyAccessTraittraitLinna\Shared\AbstractStorageFactoryclass
- PHP 8.1 required
- Constructor property promotion used when possible
- Readonly properties used when possible
Linna\Authentication\Exception\AuthenticationExceptionnow extendLinna\Router\Exception\RedirectExceptionLinna\Authentication\ProtectedControllerTrait->protect()now have as second argumentstring $routeinstead ofint $httpResponseCode = 403Linna\Authentication\ProtectedControllerTrait->protectWithRedirect()now have a third argumentstring $route
- Now drivers use Psr\SimpleCache instead of my typed verion
Linna\Container\Containernow it is possible resolve classes with interface as parameterLinna\Container\Containerminor code optimizations
Linna\DataMapper\MapperAbstract->save()update after insertLinna\DataMapper\DomainObjectAbstract->idwhen not set has value-1instead of0Linna\DataMapper\DomainObjectAbstract->setIdargument renamedobjectIdtoidLinna\DataMapper\DomainObjectAbstract->rIdpublic property removedLinna\DataMapper\DomainObjectAbstract->objectIdprotected property renamed toid
Linna\Mvc\FrontControllernow search for defaultentryPointmethod instead ofindexif$routehas notactionsetLinna\Mvc\FrontControllerrenamed asLinna\Mvc\ModelViewController
badRouteit is no longer a valid option for constructorLinna\Router\Routeas data-transfer object, all properties are read-only, all methods removedLinna\Router\Routenow used named arguments in constructor, array options no longer supportedLinna\Router\Routernow used named arguments in constructor, array options no longer supported
- All properties now are
private, class more incapsulated
Linna\Container\Containererror when a class without__constructmethod is encountered
Linna\DataMapper\MapperAbstract->save()update after insert
Linna\Session\Sessionsession die because it does not refresh expiration time on client, also if present user interaction, with browser
Linna\Mvc\View->__construct()no longer requireModelas first parameter, useless reference
Linna\Router\Router->badRouteprotected property
Linna\Storage\AbstractStorageFactoryclass, moved toLinna\Sharednamespace
v0.26.0 - 2019-08-05
Linna\DataMapper\UUID4class
Linna\Router\Route->allowedpropertyLinna\Router\Route->getAllowed()methodLinna\Router\Routerchars accepted in route params now are 0-9 A-Z a-z ._-Linna\Router\ExceptionnamespaceLinna\Router\Exception\RedirectExceptionexception
- minimum php version 7.2
- tests updated
Linna\Router\Router->__construct()now require aLinna\Router\RouteCollectionas first argument
Linna\Storage\ConnectorsInterface->getResource()now has return typeobjectLinna\Storage\Connectors\PdoConnector->getResource()now has return typeobjectLinna\Storage\Connectors\MysqliConnector->getResource()now has return typeobjectLinna\Storage\Connectors\MongoDBConnector->getResource()now has return typeobject
Linna\Authentication\User->changePassword()typo error in method nameLinna\Mvc\FrontController->runView()error when$this->routeActionvalue called as method and not declared on view class
v0.25.0 - 2019-01-13
Linna\Authentication\ProtectedController->protectWithRedirect()methodLinna\Authentication\Exception\AuthenticationExceptionexception
Linna\Authorization\EnhancedUser->__construct()Linna\Authorization\EnhancedUser->hasRole()methodLinna\Authorization\EnhancedUser->hasRoleById()methodLinna\Authorization\EnhancedUser->hasRoleByName()methodLinna\Authorization\EnhancedUserMapperInterface->grantPermission()methodLinna\Authorization\EnhancedUserMapperInterface->grantPermissionById()methodLinna\Authorization\EnhancedUserMapperInterface->grantPermissionByName()methodLinna\Authorization\EnhancedUserMapperInterface->revokePermission()methodLinna\Authorization\EnhancedUserMapperInterface->revokePermissionById()methodLinna\Authorization\EnhancedUserMapperInterface->rovekePermissionByName()methodLinna\Authorization\EnhancedUserMapperInterface->addRole()methodLinna\Authorization\EnhancedUserMapperInterface->addRoleById()methodLinna\Authorization\EnhancedUserMapperInterface->addRoleByName()methodLinna\Authorization\EnhancedUserMapperInterface->removeRole()methodLinna\Authorization\EnhancedUserMapperInterface->removeRoleById()methodLinna\Authorization\EnhancedUserMapperInterface->removeRoleByName()methodLinna\Authorization\FetchByPermissionInterfaceinterfaceLinna\Authorization\FetchByRoleInterfaceinterfaceLinna\Authorization\FetchByUserInterfaceinterfaceLinna\Authorization\PermissionTrait->canById()methodLinna\Authorization\PermissionTrait->canByName()methodLinna\Authorization\PermissionMapperInterface->permissionExistById()methodLinna\Authorization\PermissionMapperInterface->permissionExistByName()methodLinna\Authorization\Role->isUserInRole()methodLinna\Authorization\Role->isUserInRoleById()methodLinna\Authorization\Role->isUserInRoleByName()methodLinna\Authorization\RoleMapperInterface->grantPermission()methodLinna\Authorization\RoleMapperInterface->grantPermissionById()methodLinna\Authorization\RoleMapperInterface->grantPermissionByName()methodLinna\Authorization\RoleMapperInterface->revokePermission()methodLinna\Authorization\RoleMapperInterface->revokePermissionById()methodLinna\Authorization\RoleMapperInterface->revokePermissionByName()methodLinna\Authorization\RoleMapperInterface->addUser()methodLinna\Authorization\RoleMapperInterface->addUserById()methodLinna\Authorization\RoleMapperInterface->addUserByName()methodLinna\Authorization\RoleMapperInterface->removeUser()methodLinna\Authorization\RoleMapperInterface->removeUserById()methodLinna\Authorization\RoleMapperInterface->removeUserByName()methodLinna\Authorization\RoleToUserMapperInterfaceinterface
Linna\DataMapper\FetchAllInterfaceinterfaceLinna\DataMapper\FetchByNameInterfaceinterfaceLinna\DataMapper\FetchLimitInterfaceinterface
Linna\Authentication\LoginAttemptdefault value added to propertiesLinna\Authentication\Password->__construct()now accept as agumentint $algoandarray $optionsLinna\Authentication\ProtectedControllernow throwAuthenticationExceptionwhen try to access to protected resource without authenticationLinna\Authentication\ProtectedController->protect()metod now accept as argumentAuthenticationinstance and http status code asintLinna\Authentication\ProtectedControllerrenamed toLinna\Authentication\ProtectedControllerTraitLinna\Authentication\Userdefault value added to propertiesLinna\Authentication\UserMapperInterfaceextendsLinna\DataMapper\FetchByNameInterface
Linna\Authorization\Authorizationdefault value added to propertiesLinna\Authorization\Authorization->cannow accept Permission instance, permission id as integer or permission name as stringLinna\Authorization\EnhancedUserMapperInterfaceextendsLinna\Authorization\FetchByPermissionInterfaceLinna\Authorization\EnhancedUserMapperInterfaceextendsLinna\Authorization\FetchByRoleInterfaceLinna\Authorization\Permissiondefault value added to propertiesLinna\Authorization\PermissionMapperInterfaceextendsLinna\DataMapper\FetchByNameInterfaceLinna\Authorization\PermissionMapperInterfaceextendsLinna\Authorization\FetchByRoleInterfaceLinna\Authorization\PermissionMapperInterfaceextendsLinna\Authorization\FetchByUserInterfaceLinna\Authorization\PermissionTrait->can()now accepts as argumentLinna\Authorization\PermissioninstanceLinna\Authorization\RoleMapperInterfaceextendsLinna\Authorization\FetchByPermissionInterfaceLinna\Authorization\RoleMapperInterfaceextendsLinna\Authorization\FetchByUserInterfaceLinna\Authorizationn\PermissionTraitdefault value added to propertiesLinna\Authorizationn\Roledefault value added to properties
Linna\Linna\DataMapper\DomainObjectAbstract->rIdpublic property added
Linna\Httpnamespace renamed toLinna\RouterLinna\Router\Routememory usage improvementLinna\Router\Routeall properties now are publicLinna\Router\Routerdefault value added to propertiesLinna\Router\Routermemory usage improvementLinna\Router\Router->map()now accept as argument instance ofRouteInterfaceinstead ofarray
Linna\Mvc\FrontControllerdefault value added to propertiesLinna\Mvc\FrontController->__construct()now acceptRouteInterfaceinstance as last argument instead of$actionand$paramLinna\Mvc\View->__construct()now needModelandTemplateInterfaceas arguments
Linna\Session\MemcachedSessionHandlerdefault value added to propertiesLinna\Session\Sessiondefault value added to propertiesLinna\Session\Sessionmemory usage improvement
Linna\Storage\AbstractConnectordefault value added to propertiesLinna\Storage\AbstractStorageFactorydefault value added to propertiesLinna\Storage\ExtendedPDOdefault value added to properties
- Minor issues fixed
Linna\Authorization\EnhancedUserMapperInterface->fetchUserByRole()methodLinna\Authorization\EnhancedUserMapperInterface->fetchUserByPermission()methodLinna\Authorization\EnhancedUserMapperInterface->grant()methodLinna\Authorization\EnhancedUserMapperInterface->revoke()methodLinna\Authorization\PermissionMapperInterface->fetchPermissionsByRole()methodLinna\Authorization\PermissionMapperInterface->fetchPermissionsByUser()methodLinna\Authorization\PermissionMapperInterface->fetchUserPermissionHashTable()methodLinna\Authorization\PermissionMapperInterface->permissionExist()methodLinna\Authorization\PermissionTrait->getPermissions()methodLinna\Authorization\PermissionTrait->setPermissions()methodLinna\Authorization\Role->getUsers()methodLinna\Authorization\Role->setUsers()methodLinna\Authorization\RoleMapperInterface->fetchUserInheritedPermissions()methodLinna\Authorization\RoleMapperInterface->permissionGrant()methodLinna\Authorization\RoleMapperInterface->permissionRevoke()methodLinna\Authorization\RoleMapperInterface->userAdd()methodLinna\Authorization\RoleMapperInterface->userRemove()method
Linna\Router\NullRoute->toArray()methodLinna\Router\RouteCollection->toArray()method, use->getArrayCopy()insteadLinna\Router\RouteInterface->toArray()method
Linna\Shared\ClassOptionsTraittrait
v0.24.0 - 2018-09-01
Linna\Authentication\PasswordGeneratorclassLinna\DI\Containerconstructor, now rules should be passed here- void return type to methods
- Namespace for tests
- Minimun PHP version: 7.1
- Exception messages
Linna\Authentication\Authenticaterenamed toLinna\Authentication\AuthenticationLinna\Authentication\EnhancedAuthenticaterenamed toLinna\Authentication\EnhancedAuthenticationLinna\Authentication\EnhancedAuthenticateMapperInterfacerenamed toLinna\Authentication\EnhancedAuthenticationMapperInterfaceLinna\Authorization\Authorizerenamed toLinna\Authorization\AuthorizationLinna\DInamespace renamed toLinna\Container- Tests updated
Linna\Helper\Envclass, use instead dotenv packageLinna\Helper\StrclassLinna\Http\RouterCachedclass, caching will be added to app packageLinna\DI\Container->setRules()method
v0.23.1 - 2017-11-01
Linna\Mvc\FrontControllerview don't call default method
v0.23.0 - 2017-11-01
Linna\Authentication\User->uuidpropertyLinna\Mvc\Model->set()method for set data to notify to observerLinna\Mvc\Model->get()method for retrive data to notify to observerLinna\Helper\Envclass #58Linna\Helper\Eng::get()static methodLinna\Helper\Strclass #58Linna\Helper\Str::startsWith()static methodLinna\Helper\Str::endsWith()static method
Linna\Cache\DiskCache->__construct()ttl option removedLinna\Http\FastMapTraitmerged intoLinna\Http\Routerthrough magic__call()Linna\Session\MysqlPdoSessionHandler->__construct()now expectLinna\Storage\ExtendedPDOas parameterLinna\Storage\PdoStoragemoved toLinna\Storage\Connectors\PdoConnectorLinna\Storage\MysqliStoragemoved toLinna\Storage\Connectors\MysqliConnectorLinna\Storage\MongoDbStoragemoved toLinna\Storage\Connectors\MongoDBConnectorLinna\Storage\StorageInterfacerenamed toLinna\Storage\ConnectorInterfaceLinna\Storage\StorageFactory->get()now return the connection resource directly
Linna\Auth\Authenticatelogin data doesn't update after loginLinna\Mvc\FrontControlleraction execution before and after
Linna\Http\FastMapTrait
v0.22.0 - 2017-10-24
Linna\Autoloader->unregister()methodLinna\Authentication\EnhancedAuthenticateclassLinna\Authentication\EnhancedAuthenticateMapperInterfaceinterfaceLinna\Authentication\LoginAttemptclassLinna\Storage\ExtendedPDO->getLastOperationStatus()method
Linna\Authsplitted intoLinna\AuthenticationandLinna\AuthorizationLinna\Auth\Authenticatemoved under namespaceLinna\AuthenticationLinna\Auth\Passwordmoved under namespaceLinna\AuthenticationLinna\Auth\ProtectedControllermoved under namespaceLinna\AuthenticationLinna\Auth\Usermoved under namespaceLinna\AuthenticationLinna\Auth\UserMapperInterfacemoved under namespaceLinna\AuthenticationLinna\Auth\Authorizemoved under namespaceLinna\AuthorizationLinna\Auth\EnhancedUsermoved under namespaceLinna\AuthorizationLinna\Auth\EnhancedUserMapperInterfacemoved under namespaceLinna\AuthorizationLinna\Auth\Permissionmoved under namespaceLinna\AuthorizationLinna\Auth\PermissionMapperInterfacemoved under namespaceLinna\AuthorizationLinna\Auth\PermissionTraitmoved under namespaceLinna\AuthorizationLinna\Auth\Rolemoved under namespaceLinna\AuthorizationLinna\Auth\RoleMapperInterfacemoved under namespaceLinna\Authorization- Tests updated
v0.21.0 - 2017-10-04
Linna\Mvc\TemplateInterface->setData()for set template dataLinna\Storage\ExtendedPDOclassLinna\Storage\AbstractStorageFactoryclass
Linna\Http\Routerdoes not pass attributematchestoLinna\Http\RouteLinna\Mvc\View->render()now callLinna\Mvc\TemplateInterface->setData()Linna\Storage\PdoStoragenow return aLinna\Storeage\ExtendedPDOinstanceLinna\Cache\DiskCachenow depends fromLinna\Storage\AbstractStorageFactoryLinna\Storage\StorageFactorynow depends fromLinna\Storage\AbstractStorageFactoryLinna\Storage\StorageFactory->getConnection()changed name toLinna\Storage\StorageFactory->get()- Tests updated
Linna\Http\Routerproperty$routerdocblockLinna\Cache\MemcachedCache->set()double cast to intLinna\DataMapper\DomaninObjectAbstract->setId()double cast to int
v0.20.2 - 2017-07-25
Linna\Http\RouteroptionrewriteModeOffRouter
Linna\Http\Routerwhen work in write mode off- tests updated
v0.20.1 - 2017-07-17
- file permissions
v0.20.0 - 2017-07-16
Linna\Http\RouteCollectionfor createLinna\Http\Routeobjectc collections- require linna/typed-array > ^v1.0
- tests updated
CHANGELOG.mdlinks url
v0.19.0 - 2017-06-24
Linna\Cache\CacheFactoryfor get cache resources
Linna\DI\Containertest updatedLinna\DI\Resolvermerged withLinna\DI\Container
Linna\Session\Sessionbug on cookie create
Linna\Cache\Exception\InvalidArgumentExceptionreminiscence of PSR simple-cacheLinna\Auth\PermissionTrait->showPermissions()method, usegetPermissions()insteadLinna\Auth\Role->showUsers()method, usegetUsers()instead
v0.18.0 - 2017-05-30
Linna\Storage\PostgresqlPdoStoragefor PostgreSql database connections.Linna\Storage\StorageInterfaceimplementation must containpublic function __construct(array $options)Linna\Storage\PdoStorageinstead ofLinna\Storage\PostgresqlPdoStorageandLinna\Storage\MysqlPdoStorage
- Cache depends from s3b4stian simple-cache instead of Psr simple-cache
Linna\Mvc\FrontController->response()return type added:stringLinna\Mvc\TemplateInterface->output()return type added:stringLinna\Mvc\View->render()return type added:stringLinna\Mvc\TemplateInterface->output()changed name toLinna\Mvc\TemplateInterface->getOutput()
v0.17.0 - 2017-05-05
Linna\Http\Routernow can use REST routesLinna\Http\Routernow return aLinna\Http\NullRoutewhen didn't find a routeLinna\Http\NullRouteobjectLinna\Shared\ClassOptionsTrait->setOptionsnow throw an\InvalidArgumentExceptionfor bad option names
Linna\Http\RouterCachedconstructor parameters order changedLinna\Storage\MysqlPdoObjectchanged name toLinna\Storage\MysqlPdoStorageLinna\Storage\MysqliObjectchanged name toLinna\Storage\MysqliStorageLinna\Storage\MongoDbOjectchanged name toLinna\Storage\MongoDbStorageLinna\Storage\StorageObjectInterfacechanged name toLinna\Storage\StorageInterface
v0.16.0 - 2017-04-20
Linna\Http\Route->getName()methodLinna\Http\Route->getMethod()methodLinna\Http\Route->getUrl()method
Linna\Http\FastMapTrait->mapGet()changed name toLinna\Http\FastMapTrait->get()Linna\Http\FastMapTrait->mapPost()changed name toLinna\Http\FastMapTrait->post()Linna\Http\FastMapTrait->mapPut()changed name toLinna\Http\FastMapTrait->put()Linna\Http\FastMapTrait->mapPatch()changed name toLinna\Http\FastMapTrait->patch()Linna\Http\FastMapTrait->mapDelete()changed name toLinna\Http\FastMapTrait->delete()Linna\Http\FrontControllermoved toLinna\Mvc\FrontControllerLinna\Http\Route->getArray()changed name toLinna\Http\Route->toArray()Linna\Http\Routerurl evaluation improved with rewrite mode offLinna\Mvc\FrontControllerRoute class dependency removedLinna\Storage\MysqlPdoAdapterchanged name toLinna\Storage\MysqlPdoObjectLinna\Storage\MysqliAdapterchanged name toLinna\Storage\MysqliObjectLinna\Storage\MongoDbAdapterchanged name toLinna\Storage\MongoDbOjectLinna\Storage\StorageInterfacechanged name toLinna\Storage\StorageObjectInterface- Varius internal code improvements
- Tests now cover 100% of code
v0.15.0 - 2017-03-28
Linna\Http\FastMapTraittraitLinna\Http\Router->map()method for register routes after router instance creationLinna\Auth\AuthorizeclassLinna\Auth\EnhancedUserclassLinna\Auth\EnhancedUserMapperInterfaceinterfaceLinna\Auth\PermissionclassLinna\Auth\PermissionMapperInterfaceinterfaceLinna\Auth\PermissionTraittraitLinna\Auth\RoleclassLinna\Auth\RoleMapperInterfaceinterfaceLinna\Auth\UserMapperInterfaceinterfaceLinna\DataMapper\NullDomaninObjectclassLinna\Storage\StorageFactoryclassLinna\Cache\ActionMultipleTraitadded instead duplicate code inLinna\Cache\MemcachedCacheandLinna\Cache\DiskCacheLinna\SharednamespaceLinna\Shared\ClassOptionsTraittrait, provide methods for set options
- Documentation moved
Linna\Http\Routerreturnfalsewhen there isn't an error route configuredLinna\Auth\Loginchanged name toLinna\Auth\AuthenticateLinna\Storage\AdapterInterfacechanged name toLinna\Storage\StorageInterface
- Deprecated property
private $expireinLinna\Auth\Login
v0.14.0 - 2017-02-27
Linna\CachenamespaceLinna\Cache\MemcachedCacheclass, provide PSR-16 implementationLinna\Cache\DiskCacheclass, provide PSR-16 implementationLinna\Cache\Exception\InvalidArgumentExceptionexception- Tests for
Linna\Cache Linna\Session\Sessioncan store value using array or property syntaxLinna\Session\Session->statusproperty added, indicate session status$optionsparameter added toLinna\Auth\Password->__construct()Linna\Http\Router->validate()type return bool
- Session tests updated
Linna\Http\RouterCachednow requireCacheInterfaceinstead ofMemcachedLinna\DI\DIContainerchanged name toLinna\DI\ContainerLinna\DI\DIResolverchanged name toLinna\DI\Resolver
v0.13.0 - 2017-02-19
Linna\Http\FrontControllercan execute actions before and after main controller action- When extend
Linna\Mvc\Controllerit's possible declare global before() and after() valid for all controller actions - When extend
Linna\Mvc\Controllerit's possible declare specific before() and after() methods for one controller action
- Optimized
Linna\DI\DIResolvermemory usage - Optimized
Linna\Http\Router->validate() Linna\Auth\Loginchange name toLinna\Auth\Authenticate- Tests updated
- Abstract methods in
Linna\DI\ArrayAccessTraitandLinna\DI\PropertyAccessTraitundeclared arguments
v0.12.0 - 2017-02-14
Linna\DI\DIContainerswitched fromInterop\Container\ContainerInterfaceto PSR-11Linna\DI\Exception\Containerchange name toLinna\DI\Exception\ContainerExceptionLinna\DI\Exception\NotFoundchange name toLinna\DI\Exception\NotFoundExceptionLinna\Autoloadernow not throw exceptionsLinna\Autoloadertests updated
v0.11.0 - 2017-02-11
- Tests for
Linna\Storage\MysqliAdapter - Tests for
Linna\Storage\MongoDbAdapter
Linna\DI\DIResolvertests updatedLinna\DI\DIContainertests updatedLinna\DI\DIResolvernow implementsInterop\Container\ContainerInterfaceLinna\DI\DIResolvernow possible access data with array syntax or with methods
v0.10.0 - 2017-02-03
- Added
Linna\Storage\MysqlPdoAdapterclass - Added
Linna\Storage\MysqliAdapterclass - Added
Linna\Storage\MongoDbAdapterclass - Added possibility for
Linna\DI\DIResolverto resolve classes with no class instance parameters - Added
Linna\DI\DIResolver->rules()method for store rules for parameters that are no class instance
Linna\DI\DIResolverinternal optimizationLinna\DI\DIResolver->resolve()method now resolve using \ or not before class name- Namespace
Linna\Databaseturned inLinna\Storage - Class
Linna\Session\DatabaseSessionHandlerturned inLinna\Session\MysqlPdoSessionHandler - Trait
Linna\Auth\ProtectedControllerupdated - Tests updated
- Removed class
Linna\Database\Database