Releases: letsdrink/ouzo
Releases · letsdrink/ouzo
2.0.2
2.0.1
Release 2.0.0
Support for PHP 7.x is dropped. Minimal PHP version required is 8.0.
Breaking changes:
- [Core] Removed setting of default environment to
prod
. - [Core] Renamed
EnvironmentSetter
toEnvironment
, deletedset()
method fromEnvironment
andinit()
.
Enhancements:
- [Core] Added ignore list to
Backtrace::getCallingClass()
. - [Utilities] Added
Arrays::lastOrNull()
. - [Utilities] Added
Stopwatch
andTicker
classes. - [ORM] Added support for
DISTINCT ON
in PostgreSQL dialect.
Release 1.8.0
Support for PHP 5.6 is dropped. Minimal PHP version required is 7.4.
Enhancements:
- [Utilities] Added Arrays.getDuplicates(), Arrays.getDuplicatesAssoc().
- [Utilities] Added FluentArray.getDuplicates(), FluentArray.getDuplicatesAssoc().
- [Core] Added database migration tools (migrate:run and migrate:generate).
Release 1.7.0
Enhancements:
- [ORM] Model implements Serializable and JsonSerializable interfaces (issue #203).
- [ORM] Changed Model::deleteEach to use iterator instead of fetching all elements at once (issue #254).
- [ORM] Fixed fetchIterator to properly use cursor underneath.
- [ORM] Implemented upsert functionality (Model::createOrUpdate).
- [ORM] Fixed using primary key value when given as an attribute, instead of using sequence.
- [DI] Added constructor injection for arguments with types defined (issue #265).
- [DI] Implemented injection of private fields for parent class.
- [DI] Implemented injection through factory class.
- [DI] Implemented named parameters for constructor injection.
- [DI] Implemented lazy loading for singleton classes.
- [DI] Added module loader.
- [Utilities] Added equalsIgnoreCase to Functions and FluentFunctions (issue #263).
- [Utilities] Added ToStringBuilder in the apache-commons style.
Bug fixes:
- [Utilities] Fixed Clock to support DST changes when adding hours, minutes or seconds.
- [Utilities] Fixed Arrays::getNestedValue when keys lead to non-existing element with scalar parent.
- [MVC] Added clearstatcache before downloading files.
- [Tests] Fixed handling of null return type for mock objects.
Release 1.6.1
Enhancements:
- [Core] Added
Validatable::errors()
, so multiple errors can be added at once. - [Core] Added Whoops library (issue #243).
- [Core] Removed separate 404 view (you have to check http code in exception.phtml)
- [ORM] Added
Db::query()->fetchIterator()
method (issue #241). - [ORM] Added support for
EXISTS
subqueries. - [ORM] Added
ModelQueryBuilder::fetchIterator()
(issue #242). - [ORM] Added
Restrictions::isIn()
. - [Tests] Added
Assert::that()
(issue #245). - [Tests] Added
Assert::thatBool()
. - [Tests] Added
Assert::thatArray()->keys()
. - [Utilities] Added
Functions::notNull()
. - [Utilities] Added
Arrays::isAssociative()
andArrays::concat()
. - [Utilities] Added
UnbatchingIterator
. - [Utilities] Added
FluentArray::flip()
. - [Utilities]
Json::decode()
andJson::encode()
will from now on, throw exceptions on invalid input. - [Utilities] Added
Json::safeDecode()
andJson::safeEncode()
. - [Utilities] You can now read URL parameters as controllers' method arguments (issue #244).
- [Utilities]
Clock.useTimezone()
accepts bothstring
orDateTimeZone
. - [Utilities] Added
Strings::containsIgnoreCase
. - [Debug] After
renderPartial()
, you can now findPARTIAL
andEND PARTIAL
HTML comments along with partial name.
Bug fixes:
- [Core] Fixed searching routes with a
@
character. - [ORM] Fixed query parenthesis (issue #239).
- [ORM] Insert returns
id
of the last inserted element asint
. - [ORM] Fixed
EmptyQueryExecutor::fetchIterator()
method. - [Tests] More verbose message when
null
is passed toMock::verify()
(issue #236). - [Utilities] Fixed extracting ArraysAssert.
- [Utilities] Fixed
Arrays::toArray()
for empty string, false and zero. - [Utilities] Fixed
Strings::remove()
when given falsy argument (like'0'
). - [Utilities] Removed
$encoding
parameter fromStrings::uppercaseFirst()
. - [Utilities] Clock will not modify parameter
DateTime
.
Release 1.6.0
Enhancements:
[Utilities] Implemented Arrays::contains method (issue #103).
[Utilities] Added Clock::isAfterOrEqualTo and Clock::isBeforeOrEqualTo.
[Utilities] Added multi-byte safe Strings::uppercaseFirst.
[Utilities] Added pseudo localization support.
[MVC] Layout has now access to view variables.
[ORM] Added exception handling for invalid query.
[Utilities] Added Functions::endsWith method.
[Tests] Added verifier - Mock::receivedTimes (issue #153).
[Utilities] Added method Strings::removeAccent.
[Tests] Handle parameters in ControllerTestCase::get.
[ORM] Added BatchInserter.
[Utilities] Added Strings::substringAfter method.
[Utilities] Added FluentArray::sort method.
[Utilities] Added FluentArray::filterByAllowedKeys method.
[DI] Added dependency injection support (IoC container).
[Tests] Added chain to Mock::when (issue #209).
[ORM] Added Restrictions:regex method (issue #213).
[Core] ControllerFactory use Injector (issue #223).
[Utilities] Added FluentArray::groupBy method.
[DI] Injector can inject itself.
[DI] Injector config can be modified after injector initialization.
[Utilities] Added support for ArrayAssert::extract method (issue #231).
[Utilities] Added methods Functions::inArray and Functions::notInArray.
[Utilities] Refactored Booleans.
[Utilities] Added Arrays::shuffle.
[Core] Added Controller::getRequestHeaders.
[Core] Added options to PDO.
Bug fixes:
[Utilities] Fixed ArrayAssert, so that it does some type checking based on Arrays::contains behavior (issue #192).
[MVC] Fixed major performance issue with routes validation.
[ORM] Fixed inserting records with no values (issue #216).
[Tests] Support for controller tests without configured database.
[Core] Fixed json decode to make it compatible with PHP7 (issue #191).
[ORM] Fixed method Model::nullifyIfEmpty.
[Core] Fixed ForbiddenException - takes errors.
[Tools] Fixed generating models (issue #214).
[Core] Bootstrap::addConfig loads everything multiple times on consecutive executions (issue #218).
[Tools] Fixed generating @property (issue #168).
[ORM] Handle in batch inserter tables without primary key.
[Core] Fixed exception when config was not added to Bootstrap.
[Utilities] Fixed SkippingIterator so that map function is not applied on skipped elements.
[ORM] Fixed BatchInsert with fetched relations (issue #230).
[Utilities] Fixed cache for nulls.
[Core] Fixed render 404 on RouterException.
[Utilities] Fixed null handling for Optional.
[Utilities] Fixed String::contains for multi-byte.
[Utilities] Added limit (10) to number of requests being kept in Stats (issue #217).
[Utilities] Fixed comparing in Functions::notEqual and Functions::equal with type check.
[Utilities] Fixed reset JSON on error.
Release 1.5.1
Enhancements:
[ORM] Added support for subqueries in Query.
[Utilities] Added Functions::random.
[Utilities] Added Iterators (issue #189).
Bug fixes:
[MVC] Request stats are now logged only when debug is enabled.
[MVC] Added more verbose logging when controller was not found (issue #187).
[Utilities] Fixed Arrays::removeNestedKeys.
Release 1.5.0
Enhancements:
[Utilities] Extended Comparator::compareBy to support multiple expressions (issue #169).
[ORM] Added possibility of using multiple Restrictions in Any::of for the same key.
[Utilities] Added Suppliers::memoizeWithExpiration that returns supplier which caches the result of function.
[Core] Minimal log level can be assigned to a particular class/name in logger configuration.
[Core] Added Validatable::validateEmpty method.
[ORM] Extended Restrictions::between with modes: inclusive, exclusive etc. (issue #176).
[ORM] When using DbTransactionTestCase transactions are disabled (issue #178).
[Core] Added support for CSRF token in forms.
[Tools] Added method that lists all generated URI helper methods (GeneratedUriHelper::allGeneratedUriNames).
[Utilities] Implemented Optional class (issue #72).
[ORM] Added support for SELECT ... FOR UPDATE - with ModelQueryBuilder's lockForUpdate method.
[ORM] Added support for DELETE USING.
[MVC] Session is being closed when downloading or streaming file.
[MVC] Added support for UTF-8 characters in routes.
Bug fixes:
[Localization] Fixed I18n::loadLabels not to load translation file if it was already loaded (issue #173).
Release 1.4.1
Enhancements:
[ORM] New restrictions: isNull and isNotNull.
[ORM] Added EmptyWhereClause class.
[Utilities] Objects::getValue supports arrays now. It means that all functions depending on it (e.g. Functions::extract) supports arrays as well.
[ORM] Added switch for model generator to utilize shorthand array syntax (issue #160).
[ORM] Added switch for model generator to display output instead of saving file (issue #158).
[ORM] Added support for sorted hasMany relations (issue #171).
[Tests] Added ArrayAssert::isEqualTo method.
Bug fixes:
[Utilities] Added Arrays::mapEntries (issue #156).
[ORM] Fixed null parameters in where clause (issue #161).
[ORM] Fixed model generator namespace and folder name (issue #149).
[Utilities] Added Arrays::uniqueBy (issue #159).
[Tests] Changed ArrayAssert::hasSize, so that it shows original array when assertion fails (issue #163).
[ORM] Fixed insert when sequence is empty (issue #174).