[n] - new
[!] - breaking changes
[f] - fix
[r] - refactor
- Logger:
- created
AbstractFileLogger. A file will be created on__constructif non exists - created
FileLogger, which logs each message separately(no deffer). - added a test for
FileLogger - removed
FileLoggerInterface
- created
LinkTree- added test url with special chars- [!f]
Breadcrumb- encode url parts
- [!] Refactored
Controllername encoding principleNamerepresents raw unencoded stringPathtakes raw unencoded string- All Urlbuilders - take
Pathorarray of raw unencoded stringand returnencoded url - added tests
AbstractUrbuilder- encode urlUrlbuilder- test with special charsStaticUrlbuilder- test with special chars
DatabasePostgresql- conneсtion for single queries can be restored
- [n] -
PrefferedRootRouterMiddlewareUseAcceptLanguage- a new router middleware that handleAccept-lLanguageheader - [n] -
DynamicPathRouterMiddleware- can redirect to preffered root
- [n] - new router system, based on middlewares:
- [!] -
PageUseSingleViewuses one template - [!] -
PageUseControllerViewuses one template - [!]
RequestMiddlewareInterface- can return mixed result__invokereturnsmixed- added new method
getAttributeName() - tests
- [n] controller
- can hold request middleware result:
null- pass the samerequestto the next handlerResponseInterface- returns theresponse- other type - add a result to the
requestas an attribute and pass modified(new)requestto the next handler
- added a test.
- can hold request middleware result:
- [f]
Breadcrumb- fixed description fromroottohome
- [n]
PageUseControllerViewuse- breadcrumb
- static urlbuilder
- [f]
Breadcrumb- changed mappingrootdescription fromroottohome
- [!] fully refactored all view classes and interfaces
- added
PageUseSingleView - added
PageUseControllerView
- Urlbuilder
- [!] class
Urlbuilder- [!] main logic moved
AbstractUrlbuilder - [n] uses
Targetas defaults and extends fromAbstractUrlbuilder
- [!] main logic moved
- [n] added
DynamicUrlbuilder- usesDynamicTargetas defaults
- [!] class
- [n] Added new
StaticUrlbuilderandRootlessTargetto generate same url with different roots
- [n]
Session- session name can be set via__construct - VO:
- [f]
$valuevisibility changed fromprivatetoprotected - [n] add
NonNegativenumber
- [f]
- [f] - refactored
Number- methodfromStringreturns static
- [n] - Added Value objects to Domain -
TextandNonEmpty. Created tests for them - [n] -
VonowStringable
- [n] - Added Value objects to Domain -
Vo,NumberandPositive. Created tests for them
- [!]
HttpRouterInterface- removed constantNOT_FOUND_CONTROLLER_NAME - [!] -
DatabaseSqlInterfaceandDatabasePostgresql- removedtransactionQueryParams - [!] -
DatabasePostgresql- refactoredqueryParamscan be used in transaction
- [n]
RequestHandlerTrait- methodserializeAcceptHeaderhelps serialize accept header - [!] refactored routers - changed not found handler name and type, refactored tests
DynamicRootRouterPlasticineRouterRouterTrait
- [!]
LinkTreeencode url parts - [f]
DatabaseSqlInterfacemethodsqueryParamsandtransactionQueryParamsaccept array with null - [!]
Fileloader- removed
__construct - changed
loadlogic
- removed
- [!]
Urlbuilder- removedrequestfrom dep
- [!]
RequestMiddlewareInterfacemethod__invoketakes arequestas a param
-
[!] routers
HttpRouterInterfaceremoved method executePlasticineRouter- method
executerenamed tohandlewithrequestparam - removed
ServerRequestInterfaceproperty
- method
DynamicRootRouter- method
executerenamed tohandlewithrequestparam - removed
ServerRequestInterfaceproperty
- method
-
[!] server
ServerInterfacedeprecatedrunmethod renamed tohandlewithrequestparam- changed property
serverErrorControllertoRequestHandlerInterface - server now uses
RequestHandlerInterfaceto gracefully work with error - changed property
$routerfromHttpRouterInterfacetoRequestHandlerInterface
-
[!] controller
- method
executechanged tohandlewithrequestparam
- method
- [n]
OrderByto create sql SearchCriteria DatabasePostgresql- [f!] functions
queryParamsandtransactionQueryParamscan returnnull - refactor methods behavior
- check connection is opened and is ok
queryParamsdoes not throw DatabaseExcaption
- [f!] functions
- [!] fully refactored progect structure.
- [n] Controller
Namecan contain percent sign% - [n]
DatabasePostgresql- added Integration tests
- new functions
close,connectionStatus,isConnected - refactored other functions
transactionStarttakes isolation level__constructtakes flag to create a new connection
- [!] removed
CreateConnectionException - [!] renamed
DatabaseInterfacetoDatabaseSqlInterface
- [n] Controller
Namecan contain unreserved characters- alpha = lowalpha | hialpha
- digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
- safe = "$" | "-" | "_" | "." | "+"
- extra = "!" | "*" | "'" | "(" | ")" | ","
- [n] Translate Storage that implements
TranslateStorageInterfacemust useTranslateStorageExceptionon any database/structure errors - [n]
TranslateUseDynamicRootwhen catch aTranslateStorageException:- do log
- return the key
- [!] Refactored
Translateservice- moved interfaces to
TranslatefolderTranslateEntityDTOTranslateEntityDTOInterfaceTranslateInterfaceTranslateStorageInterface
- removed
TranslateStorageTranslateEntityDTOFactory
- depracate
TranslateEntityModelRepositoryInterfaceTranslateEntityDTOFactoryInterfaceTranslateEntityModelInterfaceTranslateEntityModelFactoryInterfaceTranslateEntityModelTranslateEntityModelFactoryTranslateEntityModelRepository
- translate service
- removed
hash - removed @var
currentLang - renamed to
TranslateUseDynamicRoot - add
AbstractTranslateclass - added tests
- removed
- moved interfaces to
- [f] Controller
Namecan contain0and- - [!]
DatabaseInterfacemoved to models - [n]
PostgresDatabasedoes not show html warnings
- [n]
DatabasePostgresql- added function to work with transactions - [n] Controller
Namecan contain number
- [f]
Session- public functions moved toSessionInterface - [n]
Controller- has an unique id. Based on the name if not set.
- [!] removed
UrlbuilderInterface,UrlbuilderFactoryInterface, HttpUrlbuilder, Http UrlbuilderFactory` - [n]
Urlbuilder- added new functionfromArray
- [f]
Urlbuiler- changed request property type fromRequestInterfacetoServerRequestInterfacebecause it uses incoming server request to form an uri - [f] DynamicRootRouter - add port to redirect or replace with authority
- [n]
Urlbuilder- addedDynamicTargetto create dynamic urls - [!] removed
DynamicRootDTOFactoryInterfaceand DynamicRootDTOFactory` - [!] refactored
DynamicRoot- all classes/interfaces at the same namespace
- [n] Controller path refactoring is started:
- changed
Controllerpropertypathtoname - added new entity
Pathwhich represents a query path - adden new entity
Name. This is a controller name and used to construct an url - added service
Urlbuilder - added helper class
Targetto creat request target for non dynamic root - tests
- changed
- removed
MissingRequiredParameterInFileErrorExceptionActionProcessExceptionEntityLogicExceptionsrc/Models/Errors/InvalidArgumentException.phpRepositoryConsistencyExceptionCantCreateViewException
- moved to module folders
EarlyAccessToCurrentRootErrorExceptionCantCreateControllerTreeElementExceptionCantCreateRedirectExceptionCantSendEmailExceptionSessionDoesnWorkExceptionTranslateException
- changed Controller return type from
ControllerResultInterfacetoResponseInterface - removed
ControllerResultControllerResultInterface
[n] Request middleware - RequestMiddlewareInterface, controller execution and tests
[n] Response middleware - ResponseMiddlewareInterface, controller execution and tests
[n] docs - updated controller docs, added middleware section
- added laminas-coding-standard
- changed class name:
MissingRequiredParameterInFiletoMissingRequiredParameterInFileExceptionViewtoAbstractViewCannotCreateMetadataErrortoCannotCreateMetadataErrorExceptionCantCreateControllerTreeElementtoCantCreateControllerTreeElementExceptionRouterProccessErrortoRouterProccessErrorExceptionLoggertoAbstractLoggerEarlyAccessToCurrentRootErrortoEarlyAccessToCurrentRootErrorExceptionQueryExeptiontoQueryExceptionDynamicRootActiontoAbstractDynamicRootActionMultiLanguageActiontoAbstractMultiLanguageActionCreateConnectionExeptiontoCreateConnectionExceptionActiontoAbstractActionCantCreateControllerChaintoCantCreateControllerChainException
Repositorychanged type of$idparam frommixedtoint|string
- [n] -
DTOnow can be serialized to json with json_encode - [!] -
PageViewmethod__constructparams now are type ofClosure$controllerTemplate$generateTemplate
- [!] removed
CompositeIdmodels - added
phpstanchecks level 8
- [!] PSR-7 Response - Routers, actions, controller, server now use
ResponseInterface.- replace
HttpRouterResultwithResponseInterfacefrom psr-7 package- refactor:
DefaultActionInterfaceDynamicActionInterfaceControllerResultInterfaceController- delete:
src/Results/Controller/ControllerResultFactory.phpsrc/Api/Results/Controller/ControllerResultFactoryInterface.php
- move to Controller dir
src/Results/Controller/ControllerResult.phpControllerResultInterface
- refactor
ControllerControllerResult
- delete:
- Router
- refactor:
src/Api/Routers/Http/HttpRouterInterface.phpsrc/Routers/Http/PlasticineRouter.phpsrc/Routers/Http/DynamicRootRouter.php
- delete
src/Api/Routers/RouterInterface.phpsrc/Results/Http/HttpRouterResult.phpsrc/Api/Results/Http/HttpRouterResultInterface.php
- refactor:
- Server
src/Servers/Http/DefaultServer.php
- Tests
- refactor:
- removed
Headersclasses
- replace
- [!] Routers and Redirect Service uses PSR-7 ServerRequestInterface. Refactored tests
- [!]
PlasticineRouter- controller array replaced withControllersCollection, tests, some fixes - [!]
Controller- methodgetDescriptionnow throws error on wrong dynamic route, changed return type - removed null. - [!]
Controller- nowControllerResultFactoryneeded if an action added - [n]
Controller- is fully tested
- [n] Added
FileLoaderclass to services - [f] fixed class name
CantCreateControllerTreeElement - [n] Added
TempStream- can write data tophp://tempand do this with ownwritemethod, or with given callable. Returns data as a string.
- [f]
LinkTree- description now become "home" on "root" controller - [n] Added new
ActionNotFoundException- must be used in anyActionto indicate not found error. - [!] Removed
DynamicActionNotFoundException. UseActionNotFoundExceptioninstead. - [!] Refactored
Controller- now catchesActionNotFoundExceptionon dynamic and default actionexecutecall.
- [n] added new service
Urlbuilder - [n] added new Action exception
ActionProcessException - [n] added new Model exceptions
EntityLogicExceptionandRepositoryConsistencyException
- [n]
ControllerDTO- addedgetDescriptionmethod and tests - [n]
DefaultActionInterface- new methodgetDescriptionand tests - [!n]
DynamicActionInterface- removedgetRoutes, addedgetDynamicRoutes, added new methodgetDescription - [n] created
DynamicRouteDTO, test - refactored
Controller- methodgetFullPathis public now - refactored
Action- methodgetPathusescontroller->getFullPath()to build the path, added tests - [!] Fully refactored
Sitemap- renamed toControllerTree, implement new logic do show description, tests - [!] removed
ControllerDTOFactory - [!]
LinkTreemapper - implemented new logic to work withControllerTree, tests - [!] removed
LinkCollectionandLinkDTOFactory - [!n] LinkTreeDTO -
__constructnow throws InvalidArgumentException, tests - [!] removed
LinkTreeDTOFactoryInterface - [!] removed
LinkTreeDTOFactory - [!]
Breadcrumbmapper - implemented new logic to work withControllerTree, tests, removedBreadcrumbDTOFactoryInterfaceandLinkDTOCollectionInterfacefrom dependencies - [!] deleted
BreadcrumbDTOFactoryandBreadcrumbDTOFactoryInterface
- [n] Adde a new method
getQueryParamstoServerRequestInterface
- Added requirement PHP v.8.3 to composer.json
DefaultServernow logs error catched from the server error controller- [n] Added a new method to
MultiLanguageAction
- [!]
DynamicRootRouter- refactor 404 controller name ServerInterface,DefaultServer- refactor server-error controller name
DynamicRootRouter- fix bug with controller name 404
- [!] refactored
LinkDTOCollectionInterface- $paths become optional - [n]
Action- added new function getPath - [n]
MultiLanguageAction- added new function getLanguage - [n]
LinkTree- mapper from ControllerDTO to LinkTreeDTO and tests. - [n]
LinkTreeDTO- Represents a http link to visit. Can have children. Also added tests.
- [!] refactor folders
Sitemap,Breadcrumb - added test for
Breadcrumbservice - refactored
BreadcrumbDTO
[n] - LinkDTO for Breadcrumb service, and tests
[n] - Breadcrumb service
[n] - added BreadcrumbDTO, BreadcrumbDTOFactory and tests for them
[!] - Refactored DynamicRootRouter, added ControllersCollection, and tests.
Translate,TranslateEntityModelRepository,TranslateStorage,TranslateStorageInterface,TranslateEntityModelRepositoryInterface- refactored, added new methods,Translatecan works with specific language via translate method. Tested.
ControllerDTO- fixed interface, added testsTranslate- added new function translate- [!] Refactored
ActionInterface- renamed TYPE_DEFAULT_ACTION and it's value - class
Translaterefactored - added a few tests for class
Translate
- refactored View class
- [!] CantCreateDTOException class renamed into InvalidArgumentException
- [!] PageView refactored
- added View class
- added JsonView class
- added tests for View, JsonView and dtos
- refactored Page view
[!] function
getContentremoved from DefaultViewDTOInterface
[!] method setMetadata removed from View interface
[!] method setMetadata PageView class become protected
[!] Session service and interface refactored
- added tests for Session service
- fixed view interface
- added default view dto interfaces and models
- repository deleteById takes mixed id
- added psr-7 server request interface ( partial )
- PlasticineRouter now uses HeaderColection
- some code refactor
- added Multilanguage system
- added abstract class RouterHeader
- added functions to RouterHeadersInterface ( to work with upcoming Header Collection )
- refactored HttpRouterResultInterface
- fixes database postgres
- Controller's method
setChildnow throws an error when the root controller is added as a child
- controller name 'root' moved to sitemap interface
- added Redirect service to router
- tests for Redirect service and a test for router
- http server
- http router
- controller
- actions
- sql repositories
repository ( 1 table )
composedId ( primary id has more than 1 column )
entity ( EAV )
Virtual ( 2 and more tables ) - sql database ( PostgreSql)
- Models and DTOs
- Logger Echo Email File
- Mailer ( phpmail )
- http Session
- sitemap
- http view