Releases: darya/framework
0.5.0
SQLite support, relation attachment and detachment for ORM\Records, delegate Service\Containers, other bug fixes and clean up.
General
- Improved readme files for each component
- Cleaned up trailing whitespace and unused imports
Database
- Implemented SQLite adapter
- Implemented SQL Server ANSI offset (#49)
- Fixed a bug when using
nullin array filter values - Fixed use of deprecated
MYSQL_ASSOCconstant - Implemented SQLite support for
Database\Factory
ORM
- Ensured that records loaded through find() and findOrNew() are reinstated (no
changed attributes) - Updated
Record::save()to skip saving if no data has changed - Implemented
Record::attach()andRecord::detach(), which are now used for
magic setters on relation attributes, instead of saving (associating) them
immediately (#46) - Improved belongs-to consistency issues
- Added
JsonSerializableinterface toModel - Updated
Record::call()to be more strict; avoids unexpected behavior such
as any method call on aRecordbeing valid - Implemented
Relation::query()support - allows opening relation queries
from a relation object - Fixed an issue when associating has-many relations with empty ID values
Storage
- Renamed
Queryable::execute()andQuery\Builder::execute()methods torun()(#51) - Improved in-memory storage when updating and deleting
- Added @mixin Query annotation for
Storage\Query\Builder(#53)
Service
- Fixed strict standards issue with
Facade - Implemented delegate service containers
0.5.0-beta3
Database and ORM package improvements and fixes, new Darya\Foundation package for application setup, separate package readmes and HTTP response improvements.
Changelog:
General
- Added readmes for all packages, apart from Foundation
- Simplified the framework readme
- PSR-2 code style for all packages
- PSR-4 namespacing for all unit tests
Database
- Implemented a database-specific query object that provides table joins,
subqueries,GROUP BYandHAVING, which database query translators now
support - Fixed MySQL connection query issues that occurred without the
mysqlnd
extension - Added missing error check after preparing MySQL query statement result -
Catches syntax or logical errors with queries, e.g. 'Subquery returns more
than 1 row' for column subqueries
Foundation
- Implemented a new
Foundationnamespace to house classes that aid the set up
of an application, including a configuration interface with implementations
and a handful of default service providers - Moved the autoloader to this namespace
HTTP
- Improved HTTP response
- Changed response to prepare content as a string when sent instead of when
the content is set - Changed content type to
application/jsoninstead oftext/jsonfor array
content - Implemented
Response::body()for retrieving content as a string - Removed old cookie methods
- Refactored and added more dynamic properties such as
status,headers,
cookies,contentandredirected - Unit tested
- Changed response to prepare content as a string when sent instead of when
ORM
- Lots of general improvements and refactoring for
ModelandRecord - Implemented querying parameters (filter, order, limit) to relations and eager
loading inRecord Model::data()now returns transformed (non-raw attributes)- Raw attribute access has moved to
Model::rawData() - The
toArray(),toJson()andgetIterator()methods now utilise the
transformed attributes
- Raw attribute access has moved to
- Implemented
Model::convertToJson()- allows converting plain array of models
to JSON - Added unique() method to
Queryobjects andQuery\Builderexecutor methods
0.5.0-beta2
ORM, Database and HTTP features and improvements.
Changelog:
ORM
- Implemented relation constraints
- Improved model hydration, generation and reinstatement
- Tested relations and records more thoroughly
- Implemented dot notation for
Recordsfor accessing relation attributes - Refactored relation naming and factory method
- Allows string keys in relation definitions, which call methods on the
relation when it is built, such as'foreignKey','localKey'and
'constrain'
- Allows string keys in relation definitions, which call methods on the
Database
- Refactored abstract SQL translator
- Fixed null and boolean comparisons for MySQL queries
- Refactored database/storage results
- Implemented iterable storage results (includes database results)
- Updated database connections to accept
Queryobjects for theirquery()
methods - Database factory throws an exception if it fails, instead of returning null
HTTP
- Fixed and refactored
Requestcreation, path retrieval and optionally setting
status code - Implemented default value parameters for
Requestdata retrieval methods - Implemented
content()method forRequestobjects
0.5.0-beta
Database and ORM fixes and improvements, as well as InMemory storage for testing.
Changelog:
- Updated MySQL connection to work without the mysqlnd driver
- Implemented
InMemorystorage for unit tests; includes in-memory filtering,
sorting, limiting etc - Implemented many-to-many eager loading and counting
- Refactored, tested and fixed ORM relations and other ORM & database classes
0.5.0-alpha2
Database fixes, prepared statements, SQL server support, query builder, reverse routing.
Changelog:
- Implemented SQL Server database connection
- Implemented prepared queries for MySQL connection
- Implemented dedicated
Queryclass to represent database queries - Implemented
Transformerclasses forModelattribute access and mutation - Implemented fluent query builder with queryable storage and dedicated
translator classes - Implemented reverse routing, or route URL/path generation
- Added event dispatchment to database connections
- Extracted handling of
Responsecookies to aCookiesclass - Removed
escape()methods from database connections. - Many database-related bug fixes.
0.5.0-alpha
Introduction of Database, ORM and Storage packages, as well as separating the MVC components into other existing packages. Also sees the implementation of recursive service resolution.
Changelog:
- Implemented
Database,ORMandStoragepackages - Removed use of global
DEBUGconstant - Made
Responsecontent optional - Wrote lots of unit tests
- Removed
Interfacesuffix for many interfaces - Implemented recursive service/alias resolution for
Container. - Renamed abstract
Viewclass toAbstractView
0.4.0
API improvements and refactoring.
Changelog:
- Minor
Autoloaderimprovement - Major
Routerrefactoring using method extraction Sessionobjects can now be accessed like arrays, and as a result through
their parentRequestobjects in the same way as other request data.Responserefactoring, also removedResponse::addContent()- Removed redundant
Tools::processPost() - Added
ContainerInterface::all()andSessionInterface::has() Containernow automatically injects itself to anyContainerAwareInterface
implementors that it instantiates- Simplified
Request/ResponseAPI
0.4.0-beta
v0.4.0-beta brings continued routing and service improvements since v0.4.0-alpha as well as some new features.
The most notable changes include lazy-loaded service definitions for Container, a simple Events system, the removal of Dispatcher, better Router decoupling from controllers and query strings overriding get data in Request objects.
Changelog:
Autoloaderrefactoring- Implemented improved
Dispatcherfunctionality inRouter, making
Dispatcherredundant - Implemented
Eventscomponent that can be optionally used for routing hooks - Implemented optional usage of service container for resolving route
controllers and actions - Method support for
Container::call() - Implemented
Container::share()to wrap callable service definitions in
closures that always return the same instance. This enables lazy-loading
service instances, only instantiating them when resolved from the container. - Request objects parse URI queries into get variables and store a path value.
- Updated main readme to consist primarily of code examples.
Controllernow implements ContainerAwareInterface, as doesRouter.- Added more thorough
Facadeexceptions - Implemented
Applicationclass which registered and boots service providers.
0.4.0-alpha
v0.4.0 is intended to focus on improving routing and service management.
v0.4.0-alpha introduces a lot of API changes preparing for this and also implements reverse routing (URL generation).
Changelog:
- More expressive routing API
- Implemented reverse routing using named or arbitrary routes
- Various non-backwards-compatible API changes, hence the minor version change
0.3.0
v0.3.0 brings improvements to autoloading, models & views and a major feature to the service container. Also written a lot of readme's which are destined to be made more concise and informative.
Changelog:
- Readme files
- Autoloader script (
autoloader.php) - Improvements to
Autoloaderclass - Minor and cosmetic improvements to
RequestandResponseclasses Responseaccepts arrays as content to be sent as JSON- Implemented
Model::toArray(),Model::toJson()and some useful interfaces - Implemented
SmartyView - Routes accept objects as default controllers
- Respond to a request directly from a
RouterusingRouter::respond - Implemented service container reflection so function or class constructor
parameters can be resolved usingContainer::callorContainer::createif
the type-hinted classes or interfaces are registered with the container