Releases: darya/framework
0.5.0
SQLite support, relation attachment and detachment for ORM\Record
s, delegate Service\Container
s, 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
null
in array filter values - Fixed use of deprecated
MYSQL_ASSOC
constant - 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
JsonSerializable
interface toModel
- Updated
Record::call()
to be more strict; avoids unexpected behavior such
as any method call on aRecord
being 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 BY
andHAVING
, 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
Foundation
namespace 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/json
instead oftext/json
for 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
,content
andredirected
- Unit tested
- Changed response to prepare content as a string when sent instead of when
ORM
- Lots of general improvements and refactoring for
Model
andRecord
- 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
Query
objects andQuery\Builder
executor 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
Records
for 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
Query
objects for theirquery()
methods - Database factory throws an exception if it fails, instead of returning null
HTTP
- Fixed and refactored
Request
creation, path retrieval and optionally setting
status code - Implemented default value parameters for
Request
data retrieval methods - Implemented
content()
method forRequest
objects
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
InMemory
storage 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
Query
class to represent database queries - Implemented
Transformer
classes forModel
attribute 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
Response
cookies to aCookies
class - 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
,ORM
andStorage
packages - Removed use of global
DEBUG
constant - Made
Response
content optional - Wrote lots of unit tests
- Removed
Interface
suffix for many interfaces - Implemented recursive service/alias resolution for
Container
. - Renamed abstract
View
class toAbstractView
0.4.0
API improvements and refactoring.
Changelog:
- Minor
Autoloader
improvement - Major
Router
refactoring using method extraction Session
objects can now be accessed like arrays, and as a result through
their parentRequest
objects in the same way as other request data.Response
refactoring, also removedResponse::addContent()
- Removed redundant
Tools::processPost()
- Added
ContainerInterface::all()
andSessionInterface::has()
Container
now automatically injects itself to anyContainerAwareInterface
implementors that it instantiates- Simplified
Request
/Response
API
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:
Autoloader
refactoring- Implemented improved
Dispatcher
functionality inRouter
, making
Dispatcher
redundant - Implemented
Events
component 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.
Controller
now implements ContainerAwareInterface, as doesRouter
.- Added more thorough
Facade
exceptions - Implemented
Application
class 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
Autoloader
class - Minor and cosmetic improvements to
Request
andResponse
classes Response
accepts 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
Router
usingRouter::respond
- Implemented service container reflection so function or class constructor
parameters can be resolved usingContainer::call
orContainer::create
if
the type-hinted classes or interfaces are registered with the container