- raised minimum required PHP version to 5.6
- moved
stubbles\lang\Sequence
into a separate package stubbles/sequence- package is required by stubbles/core
- the new full class name is
stubbles\sequence\Sequence
- moved
stubbles\lang\castToArray()
tostubbles\sequence\castToArray()
- moved
stubbles\lang\ensureCallable()
tostubbles\sequence\ensureCallable()
- moved
stubbles\peer
into separate package stubbles/peer - moved
stubbles\streams
into separate package stubbles/streams - moved several classes and functions to stubbles/values
stubbles\lang\ModifiableProperties
is nowstubbles\value\ModifiableProperties
stubbles\lang\Properties
is nowstubbles\value\Properties
stubbles\lang\Parse
is nowstubbles\value\Parse
stubbles\lang\Result
is nowstubbles\value\Result
stubbles\lang\SecureString
is nowstubbles\value\Secret
stubbles\lang\getType()
is nowstubbles\values\typeOf()
stubbles\lang\exception\lastErrorMessage()
is nowstubbles\values\lastErrorMessage()
- removed
stubbles\lang\properties()
- removed
stubbles\lang\parseProperties()
- removed
stubbles\lang\parsePropertiesFile()
- moved
stubbles\lang\reflect
into separate package stubbles/reflect - changed
stubbles\ioc\module\BindingModule::configure()
to accept an optional second parameter$projectPath
- deprecated
stubbles\ioc\App
, usestubbles\App
instead, will be removed with 8.0.0 - deprecated
stubbles\lang\Mode
usestubbles\Environment
instead, will be removed with 8.0.0 - deprecated
stubbles\lang\DefaultMode::prod()
usestubbles\environments\Production
instead, will be removed with 8.0.0 - deprecated
stubbles\lang\DefaultMode::dev()
usestubbles\environments\Development
instead, will be removed with 8.0.0 - moved
stubbles\ioc\modules\Runtime
tostubbles\Runtime
- deprecated
stubbles\lang\errorhandler\ExceptionLogger
, usestubbles\environments\ExceptionLogger
instead, will be removed with 8.0.0 - moved classes and functions from
stubbles\lang
tostubbles
, old class definition will be removed with 8.0.0- moved
stubbles\lang\ResourceLoader
tostubbles\ResourceLoader
- moved
stubbles\lang\Rootpath
tostubbles\Rootpath
- moved
- deprecated several classes and functions, will be removed with 8.0.0:
stubbles\lang\__toString()
stubbles\lang\__convertToStringRepresentation()
stubbles\lang\errorhandler\CompositeErrorHandler
stubbles\lang\errorhandler\ErrorHandler
stubbles\lang\errorhandler\ExceptionHandler
stubbles\lang\DefaultMode
stubbles\lang\Enum
- parsing enums in properties and annotations is not supported any more as of this releasestubbles\predicate
- everything in
stubbles\lang\exception
- added
stubbles\ioc\Binder::createInjector(callable ...$applyBindings)
- fixed
stubbles\lang\iterator\MappingIterator
calling value- and key-mapper when end of iteration reached
- allow access to project path in
stubbles\ioc\module\Runtime
- added
stubbles\streams\nonEmptyLinesOf()
- added new methods to
stubbles\lang\Result
stubbles\lang\Result::isEmpty()
stubbles\lang\Result::whenEmpty()
stubbles\lang\Result::applyWhenEmpty()
stubbles\lang\Result::whenNull()
andstubbles\lang\Result::applyWhenNull()
now return an instance ofstubbles\lang\Result
instead if the raw value to allow more chaining
stubbles\ioc
does not support setter injection any more, deprecated since 5.1.0- removed
stubbles\ioc\Binder::setSessionScope()
, deprecated since 5.4.0 - removed old reflection, deprecated since 5.3.0:
stubbles\lang\reflect\BaseReflectionClass
stubbles\lang\reflect\MixedType
stubbles\lang\reflect\ReflectionClass
stubbles\lang\reflect\ReflectionExtension
stubbles\lang\reflect\ReflectionFunction
stubbles\lang\reflect\ReflectionMethod
stubbles\lang\reflect\ReflectionObject
stubbles\lang\reflect\ReflectionParameter
stubbles\lang\reflect\ReflectionPrimitive
stubbles\lang\reflect\ReflectionProperty
stubbles\lang\reflect\ReflectionRoutine
stubbles\lang\reflect\ReflectionType
stubbles\lang\reflect\matcher\MethodMatcher
stubbles\lang\reflect\matcher\PropertyMatcher
stubbles\lang\typeFor()
stubbles\lang\reflect\annotation\Annotatable
stubbles\lang\reflect\annotation\Annotations::of()
stubbles\lang\reflect()
now returns PHP's internal reflection classesParse::toClass()
now returns\ReflectionClass
- removed
stubbles\ioc\App::bindCurrentWorkingDirectory()
, usestubbles\ioc\App::currentWorkingDirectory()
instead, deprecated since 5.0.0 - removed
stubbles\ioc\App::bindHostname()
, usestubbles\ioc\App::hostname()
instead, deprecated since 5.0.0 - removed several exceptions where build-in exceptions in PHP exist, deprecated since 5.0.0:
stubbles\lang\exception\IllegalAccessException
, useLogicException
insteadstubbles\lang\exception\IllegalArgumentException
, useInvalidArgumentException
insteadstubbles\lang\exception\IllegalStateException
, useLogicException
insteadstubbles\lang\exception\MethodInvocationException
, useBadMethodCallException
insteadstubbles\lang\exception\MethodNotSupportedException
, useBadMethodCallException
insteadstubbles\lang\exception\RuntimeException
, use nativeRuntimeException
instead
- removed
stubbles\lang\exception\Throwable
, deprecated since 5.0.0 - split
stubbles\peer\Socket
into two classesstubbles\peer\Socket::connect()
now returns an instance ofstubbles\peer\Stream
- all functionallity to read and write on a socket is now in
stubbles\peer\Stream
- removed
stubbles\peer\BsdSocket
stubbles\peer\IpAddress::openSocket()
andstubbles\peer\IpAddress::openSecureSocket()
now returnstubbles\peer\Stream
- added
stubbles\lang\Result
@ImplementedBy
can now be speficied per runtime mode- it is not required any more to mark constructors with
@Inject
when they should be subject to dependency injection - added
stubbles\peer\IpAddress::createSocket()
andstubbles\peer\IpAddress::createSecureSocket()
- improved speed for
stubbles\peer\http\HttpUri::hasDnsRecord()
by checking only relevant DNS records - sequences returned from the following methods now have the name of the method/property/parameter as key:
stubbles\lang\reflect\methodsOf()
stubbles\lang\reflect\propertiesOf()
stubbles\lang\reflect\parametersOf()
stubbles\lang\reflect\parametersOfConstructor()
stubbles\lang\reflect\parameter()
stubbles\lang\reflect\constructorParameter()
- fixed annotation string values which contained both ' and "
- added
stubbles\peer\Uri::withPath()
- allowed iteration with non-seekable input streams
- Enabled session scoped bindings even when no session exists. However, retrieving a session scoped instance without setting a session will throw a
\RuntimeException
- deprecated
stubbles\ioc\Binder::setSessionScope()
, use built-in session scope with session interface instead, will be removed with 6.0.0 - added
stubbles\ioc\binding\Session
as simple session interface for the built-in session scope - added
stubbles\ioc\Injector::setSession()
to provide session instance for session binding scope, will also bind session interface to this instance so it is available for injection
- added
stubbles\streams\StandardInputStream
- added
stubbles\streams\StandardOutputStream
- annotated
stubbles\lang\errorhandler\ExceptionLogger
with@Singleton
- added
stubbles\lang\castToArray()
stubbles\lang\Sequence::append()
now accepts anything
- ensured
stubbles\lang\Sequence
is serialized to XML in a proper way with older versions of stubbles/xml - ensured
stubbles\lang\Sequence
can be serialized as JSON
stubbles\peer\Uri::addParam()
now accepts objects with__toString()
method
- deprecated classes in
stubbles\lang\reflect
, use PHP's native reflection instead, will be removed with 6.0.0stubbles\lang\reflect\BaseReflectionClass
stubbles\lang\reflect\MixedType
stubbles\lang\reflect\ReflectionClass
stubbles\lang\reflect\ReflectionExtension
stubbles\lang\reflect\ReflectionFunction
stubbles\lang\reflect\ReflectionMethod
stubbles\lang\reflect\ReflectionObject
stubbles\lang\reflect\ReflectionParameter
stubbles\lang\reflect\ReflectionPrimitive
stubbles\lang\reflect\ReflectionProperty
stubbles\lang\reflect\ReflectionRoutine
stubbles\lang\reflect\ReflectionType
stubbles\lang\reflect\matcher\MethodMatcher
stubbles\lang\reflect\matcher\PropertyMatcher
- added
stubbles\lang\reflect\annotationsOf()
which allows to retrieve annotations without using thestubbles\lang\reflect\Reflection*
classes - added
stubbles\lang\reflect\annotationsOfConstructor()
as shortcut - added
stubbles\lang\reflect\annotationsOfParameter()
as shortcut - added
stubbles\lang\reflect\annotationsOfConstructorParameter()
as shortcut - all typehints in ˚\stubbles\ioc
classes which where against
stubbles\lang\reflect\Reflection*` classes now use PHP standard reflection classes - deprecated
stubbles\lang\typeFor()
, will be removed with 6.0.0 - deprecated
stubbles\lang\reflect\annotation\Annotations::of()
, usestubbles\lang\reflect\annotation\Annotations::named()
instead, will be removed with 6.0.0
- added
stubbles\lang\reflect\annotation\Annotations::firstNamed()
- added
stubbles\lang\reflect\methodsOf()
- added
stubbles\lang\reflect\propertiesOf()
- added
stubbles\lang\reflect\parametersOf()
- added
stubbles\lang\reflect\parametersOfConstructor()
- added
stubbles\lang\reflect\parameter()
- added
stubbles\lang\reflect\constructorParameter()
- added
stubbles\predicate\ContainsAnyOf
- implemented #122: add support for ::class in value parser
- added
stubbles\lang\Sequence::mapKeys()
stubbles\lang\iterator\MappingIterator
can now work with key mapping only
- added
stubbles\lang\Sequence
- added
stubbles\streams\linesOf()
- added
stubbles\peer\Uri::addParams()
- fixed bug: transposing a parsed uri forgot any parameters changed in query string
- Setter injection is now discouraged and disabled by default, and will be removed with 6.0.0.
- Reenable the old behaviour with
stubbles\ioc\Binder::enableSetterInjection()
- Reenable the old behaviour with
- IoC now supports default param values for non-optional injections: If no binding present for a param but the param has a default value the default value will be used for injection.
- implemented #117: injection stack on binding exceptions
- improved performance of annotation parsing
- improved annotation cache storage functions api
- properties from config.ini are also now available as instance of
stubbles\lang\Properties
, namedconfig.ini
- fixed issue #119: stubbles\peer\ParsedUri should catch IllegalArgumentException from stubbles\peer\QueryString
- Removed
stubbles\ioc\App::createModeBindingModule($projectPath, $mode = null)
- project path and mode are now bound automatically if not explicitly specified
- to overrule or configure the defaults use
stubbles\ioc\App::runtime($mode = null)
instead
- A
__bindings()
method within an app doesn't receive the project path any more. If it is still required callself::projectPath()
- Deprecated
stubbles\ioc\App::bindCurrentWorkingDirectory()
, usestubbles\ioc\App::currentWorkingDirectory()
instead, will be removed with 6.0.0 - Deprecated
stubbles\ioc\App::bindHostname()
, usestubbles\ioc\App::hostname()
instead, will be removed with 6.0.0 - Removed possibility to change values on annotations, annotations should be read only.
- It is now possible to have more than one annotation of the same type. Retrieving only one annotation via one of the following methods will only return the first defined one:
stubbles\lang\reflect\ReflectionClass::annotation()
stubbles\lang\reflect\ReflectionObject::annotation()
stubbles\lang\reflect\ReflectionFunction::annotation()
stubbles\lang\reflect\ReflectionMethod::annotation()
stubbles\lang\reflect\ReflectionParameter::annotation()
stubbles\lang\reflect\ReflectionProperty::annotation()
- Deprecated
stubbles\lang\reflect\Reflection*::getAnnotation()
, usestubbles\lang\reflect\Reflection*::annotation()
instead - Retrieving a non-existing value from
stubbles\lang\reflect\annotation\Annotation
via method will throw aBadMethodCallException
instead ofstubbles\lang\exception\MethodNotSupportedException
- Parsing
null
with any of thestubbles\lang\Parse
methods will now always return null. - Removed all classes, methods and functions deprecated with 4.0.0 and 4.1.0
- The
stubbles\lang\exception\IllegalAccessException
is now also an instance ofLogicException
. It is recommended to use the latter in catch statements, as this increases interoperability. - The
stubbles\lang\exception\IllegalArgumentException
is now also an instance ofInvalidArgumentException
. It is recommended to use the latter in catch statements, as this increases interoperability. - The
stubbles\lang\exception\IllegalStateException
is now also an instance ofLogicException
. It is recommended to use the latter in catch statements, as this increases interoperability. - The
stubbles\lang\exception\MethodInvocationException
is now also an instance ofBadMethodCallException
. It is recommended to use the latter in catch statements, as this increases interoperability. - The
stubbles\lang\exception\MethodNotSupportedException
is now also an instance ofBadMethodCallException
. It is recommended to use the latter in catch statements, as this increases interoperability. - Deprecated several exceptions where build-in exceptions in PHP exist, will be removed with 6.0.0:
stubbles\lang\exception\IllegalAccessException
, useLogicException
insteadstubbles\lang\exception\IllegalArgumentException
, useInvalidArgumentException
insteadstubbles\lang\exception\IllegalStateException
, useLogicException
insteadstubbles\lang\exception\MethodInvocationException
, useBadMethodCallException
insteadstubbles\lang\exception\MethodNotSupportedException
, useBadMethodCallException
insteadstubbles\lang\exception\RuntimeException
, use nativeRuntimeException
instead
- Deprecated
stubbles\lang\exception\Throwable
, will be removed with 6.0.0
- Added possibility to retrieve all annotations for an element:
stubbles\lang\reflect\ReflectionClass::annotations()
stubbles\lang\reflect\ReflectionObject::annotations()
stubbles\lang\reflect\ReflectionFunction::annotations()
stubbles\lang\reflect\ReflectionMethod::annotations()
stubbles\lang\reflect\ReflectionParameter::annotations()
stubbles\lang\reflect\ReflectionProperty::annotations()
- Added non-static usage of
stubbles\lang\Parse
- instance creation takes a string value
- all methods
to*()
are additionally available as non-staticas*()
methods excepttoType()
- Added
stubbles\lang\Properties::parse()
which returns an instance ofstubbles\lang\Parse
- Added
stubbles\lang\reflect\annotation\Annotation::parse()
which returns an instance ofstubbles\lang\Parse
- Added
stubbles\lang\iterator\RecursiveArrayIterator
to iterate recursively on leafs of arrays only - Added
stubbles\lang\iterator\MappingIterator
to allow mapping of keys and values during iteration
- added support to reflect array callbacks with
stubbles\lang\reflect()
- fixed bug that property bindings did not work together with type hints, e.g. for
stubbles\lang\SecureString
- fixed bug in
stubbles\lang\exception\Exception::__toString()
always reporting this class instead of the real exception class - all properties in
stubbles\lang\Properties
where key ends withpassword
are automatically stored asstubbles\lang\SecureString
- fixed bug that a
var_dump()
of astubbles\lang\SecureString
instance reveiled the length of the secured string
- fixed bug with scheme transposing and default ports for http uris
stubbles\lang\Properties::parseBool()
on property value'1'
does not yieldtrue
any more, use one of'true'
,'yes'
or'on'
instead
- added
stubbles\lang\Parse
- unified string to value parsing for properties and annotation values
- properties bound via
stubbles\ioc\Binder::bindProperties()
are now injected as parsed values instead of as string values only* added
stubbles\lang\Properties::parseValue()`, deprecated other parsing methods, will be removed with 5.0.0 - `parseString()
parseInt()
parseFloat()
parseBool()
parseArray()
parseHash()
parseRange()
- fixed bug: transposing
stubbles\peer\http\HttpUri
to another scheme must change the port
- ensure
stubbles\predicate\IsExistingDirectory
andstubbles\predicate\IsExistingFile
use current working directoy when no base path given
- removed namespace prefix
net
, base namespace is nowstubbles
only - removed the following classes, can now be found in separate package stubbles/date:
net\stubbles\lang\types\Date
net\stubbles\lang\types\DateModifier
net\stubbles\lang\types\TimeZone
net\stubbles\lang\types\datespan\AbstractDatespan
net\stubbles\lang\types\datespan\CustomDatespan
net\stubbles\lang\types\datespan\Datespan
net\stubbles\lang\types\datespan\Day
net\stubbles\lang\types\datespan\Month
net\stubbles\lang\types\datespan\Week
net\stubbles\lang\types\datespan\Year
- removed
net\stubbles\lang\Clonable
- removed
net\stubbles\lang\types\LocalizedString
- removed
net\stubbles\lang\enforceInternalEncoding()
, not supported since PHP 5.6 any more - removed
net\stubbles\ioc\App::createPropertiesBindingModule()
, deprecated since 3.4.0 - removed
net\stubbles\ioc\module\PropertiesBindingModule
, deprecated since 3.4.0 - removed
net\stubbles\ioc\App::persistAnnotations()
, deprecated since 3.1.0 - removed
net\stubbles\ioc\App::persistAnnotationsInFile()
, deprecated since 3.1.0 - removed
net\stubbles\lang\StringRepresentationBuilder
, deprecated since 3.1.0 - removed
net\stubbles\lang\Object
andnet\stubbles\lang\BaseObject
, deprecated since 3.0.0 - all properties in
stubbles\lang\Properties
with keypassword
are automatically stored asstubbles\lang\SecureString
- major API rework: replaced some constructs with better ones, all deprecated will be removed with 5.0.0
- deprecated
stubbles\lang\Properties::getSections()
, iterate over instance instead - deprecated
stubbles\lang\Properties::hasSection()
, usestubbles\lang\Properties::containSection()
instead - deprecated
stubbles\lang\Properties::getSection()
, usestubbles\lang\Properties::section()
instead - deprecated
stubbles\lang\Properties::getSectionKeys()
, usestubbles\lang\Properties::keysForSection()
instead - deprecated
stubbles\lang\Properties::hasValue()
, usestubbles\lang\Properties::containValue()
instead - deprecated
stubbles\lang\Properties::getValue()
, usestubbles\lang\Properties::value()
instead - deprecated
stubbles\lang\ResourceLoader::getProjectResourceUri()´, use
stubbles\lang\ResourceLoader::open()or
stubbles\lang\ResourceLoader::load()` instead - deprecated
stubbles\lang\ResourceLoader::getResourceUris()´, use
stubbles\lang\ResourceLoader::availableResourceUris()` instead - deprecated
stubbles\lang\ResourceLoader::getRootPath()´ and
stubbles\lang\ResourceLoader::getRoot()´, usestubbles\lang\Rootpath
instead - deprecated
stubbles\peer\http\AcceptHeader::getList()
- deprecated
stubbles\peer\BsdSocket::getType()
, usestubbles\peer\BsdSocket::type()
instead - deprecated
stubbles\peer\BsdSocket::getOption()
, usestubbles\peer\BsdSocket::option()
instead - deprecated
stubbles\peer\Socket::getTimeout()
, usestubbles\peer\Socket::timeout()
instead - deprecated
stubbles\peer\Socket::getPrefix()
, usestubbles\peer\Socket::usesSsl()
instead - deprecated
stubbles\peer\Socket::getInputStream()
, usestubbles\peer\Socket::in()
instead - deprecated
stubbles\peer\Socket::getOutputStream()
, usestubbles\peer\Socket::out()
instead - deprecated
stubbles\peer\Uri::getScheme()
, usestubbles\peer\Uri::scheme()
instead - deprecated
stubbles\peer\Uri::getUser()
, usestubbles\peer\Uri::user()
instead - deprecated
stubbles\peer\Uri::getPassword()
, usestubbles\peer\Uri::password()
instead - deprecated
stubbles\peer\Uri::getHost()
, usestubbles\peer\Uri::hostname()
instead - deprecated
stubbles\peer\Uri::getPort()
, usestubbles\peer\Uri::port()
instead - deprecated
stubbles\peer\Uri::getPath()
, usestubbles\peer\Uri::path()
instead - deprecated
stubbles\peer\Uri::getQueryString()
, usestubbles\peer\Uri::queryString()
instead - deprecated
stubbles\peer\Uri::getParam()
, usestubbles\peer\Uri::param()
instead - deprecated
stubbles\peer\Uri::getFragment()
, usestubbles\peer\Uri::fragment()
instead - deprecated
stubbles\peer\http\Http::getStatusClass()
, usestubbles\peer\http\Http::statusClassFor()
instead - deprecated
stubbles\peer\http\Http::getStatusCodes()
, usestubbles\peer\http\Http::statusCodes()
instead - deprecated
stubbles\peer\http\Http::getReasonPhrase()
, usestubbles\peer\http\Http::reasonPhraseFor()
instead - deprecated
stubbles\peer\http\Http::VERSION_1_0
, usestubbles\peer\http\HttpVersion::HTTP_1_0
instead - deprecated
stubbles\peer\http\Http::VERSION_1_1
, usestubbles\peer\http\HttpVersion::HTTP_1_1
instead - deprecated
stubbles\peer\http\Http::isVersionValid()
, usestubbles\peer\http\HttpVersion
instead - deprecated
stubbles\peer\http\HttpResponse::getStatusLine()
, usestubbles\peer\http\HttpResponse::statusLine()
instead - deprecated
stubbles\peer\http\HttpResponse::getHttpVersion()
, usestubbles\peer\http\HttpResponse::httpVersion()
instead - deprecated
stubbles\peer\http\HttpResponse::getStatusCode()
, usestubbles\peer\http\HttpResponse::statusCode()
instead - deprecated
stubbles\peer\http\HttpResponse::getStatusCodeClass()
, usestubbles\peer\http\HttpResponse::statusCodeClass()
instead - deprecated
stubbles\peer\http\HttpResponse::getReasonPhrase()
, usestubbles\peer\http\HttpResponse::reasonPhrase()
instead - deprecated
stubbles\peer\http\HttpResponse::getHeader()
, usestubbles\peer\http\HttpResponse::headers()
instead - deprecated
stubbles\peer\http\HttpResponse::getBody()
, usestubbles\peer\http\HttpResponse::body()
instead - deprecated
stubbles\peer\streams\memory\MemoryOutputStream::getBuffer()
, usestubbles\peer\streams\memory\MemoryOutputStream::buffer()
instead - deprecated
stubbles\peer\streams\filter\StreamFilter
, use predicates instead - deprecated
stubbles\peer\streams\filter\CompositeStreamFilter
, use predicates instead
- deprecated
- deprecated
stubbles\peer\BsdSocket::getDomain()
, will be removed with 5.0.0 - deprecated
stubbles\peer\Socket::getHost()
, will be removed with 5.0.0 - deprecated
stubbles\peer\Socket::getPort()
, will be removed with 5.0.0 stubbles\peer\Socket::getInputStream()
andstubbles\peer\Socket::getOutputStream()
will now always return the same instancestubbles\peer\http\HttpUri::fromString()
no longer accepts uris with userinfo by default in compliance with RFC 7230, to retain the old behaviour passstubbles\peer\http\Http::RFC_2616
as second parameter
stubbles\lang\ResourceLoader
now supports PSR-4- fixed bug:
stubbles\lang\ModifiableProperties::merge()
now returnsstubbles\lang\ModifiableProperties::merge()
instead ofstubbles\lang\Properties::merge()
only - added
stubbles\lang\ModifiableProperties::unmodifiable()
- added
stubbles\lang\Rootpath
- added
stubbles\lang\SecureString
- added
stubbles\lang\reflect\annotation\Annotation::targetName()
which returns the name of the class, method, function, property or parameter of where the annotation comes from - added
stubbles\peer\http\Http::RFC_2616
andstubbles\peer\http\Http::RFC_7230
- added
stubbles\peer\http\Http::isValidRfc()
- added
stubbles\peer\http\Http::lines()
- added
stubbles\peer\http\Http::OPTIONS
- added
stubbles\peer\http\HttpVersion
- added
stubbles\peer\http\HttpUri::castFrom()
- added
stubbles\peer\http\HttpUri::fromParts()
- allowed conversion of
stubbles\peer\streams\memory\MemoryOutputStream
to a string, will contain buffer content - added
stubbles\peer\http\emptyAcceptHeader()
net\stubbles\ioc\App::createModeBindingModule()
now accepts a callable as second parameter which returns a mode- added
stubbles\predicate
:stubbles\predicate\Predicate
as abstract base implementationstubbles\predicate\CallablePredicate
to wrap something callable as a predicatestubbles\predicate\Contains
stubbles\predicate\Equals
stubbles\predicate\IsExistingDirectory
stubbles\predicate\IsExistingFile
stubbles\predicate\IsExistingHttpUri
stubbles\predicate\IsHttpUri
stubbles\predicate\IsIpAddress
stubbles\predicate\IsIpV4Address
stubbles\predicate\IsIpV6Address
stubbles\predicate\IsMailAddress
stubbles\predicate\IsOneOf
stubbles\predicate\Regex
stubbles\lang\reflect()
can now also reflect functionsstubbles\lang\reflect()
now throws astubbles\lang\exception\IllegalArgumentException
if the value can not be reflected- added
stubbles\lang\ensureCallable()
- added
stubbles\peer\IpAddress
- fixed PHP error when calling
net\stubbles\lang\types\datespan\Month::fromString()
with invalid value
- added
net\stubbles\lang\types\datespan\Month::fromString()
to create an instance from a string like 2014-05
- added
net\stubbles\lang\types\datespan\Month::last()
to create an instance for the previous month - added
net\stubbles\lang\types\datespan\Day::tomorrow()
andnet\stubbles\lang\types\datespan\Day::yesterday()
to create an instance for tomorrow or yesterday
- raised minimum PHP version to 5.4.0
- the following methods now except anything that can be casted to an instance of
net\stubbles\lang\types\Date
vianet\stubbles\lang\types\Date::castFrom()
net\stubbles\lang\types\Date::isBefore()
net\stubbles\lang\types\Date::isAfter()
net\stubbles\lang\types\TimeZone::getOffset()
net\stubbles\lang\types\TimeZone::getOffsetInSeconds()
net\stubbles\lang\types\TimeZone::translate()
net\stubbles\lang\types\datespan\CustomDatespan::__construct()
net\stubbles\lang\types\datespan\Day::__construct()
net\stubbles\lang\types\datespan\Week::__construct()
net\stubbles\lang\types\datespan\Datespan::containsDate()
- added several shortcut methods on
net\stubbles\lang\types\datespan\Datespan
:startsBefore($date)
startsAfter($date)
endsBefore($date)
endsAfter($date)
formatStart($format, TimeZone $timeZone = null)
formatEnd($format, TimeZone $timeZone = null)
- added
net\stubbles\lang\types\Date::castFrom()
- fixed
net\stubbles\ioc\App::createModeBindingModule()
not accepting$projectPath
- added
net\stubbles\lang\exception\lastErrorMessage()
- fixed bug: project path for
net\stubbles\lang\errorhandler\ExcepionLogger
erronously marked with@Property
- Deprecated
net\stubbles\ioc\App::createPropertiesBindingModule()
- Properties are now bound via
net\stubbles\ioc\App::createModeBindingModule()
- Current working directory can now be bound via
net\stubbles\ioc\App::bindCurrentWorkingDirectory()
- Current hostnames can now be bound via
net\stubbles\ioc\App::bindHostname()
- implemented issue #77: properties with values depending on runtime mode
- added '@Inject' to
net\stubbles\lang\errorhandler\ExceptionLogger
- added
net\stubbles\lang\errorhandler\ExceptionLogger
- added
net\stubbles\streams\OutputStream::writeLines()
and to all provided implementations
- added
net\stubbles\lang\ResourceLoader::getProjectResourceUri()
- added
net\stubbles\lang\reflect\ReflectionParameter::getType()
- added
net\stubbles\lang\typeFor()
- added
net\stubbles\lang\reflect\MixedType
- added
net\stubbles\lang\reflect\ReflectionPrimitive::isKnown()
- added support for
void
,mixed
andobject
innet\stubbles\lang\reflect\ReflectionMethod
andnet\stubbles\lang\reflect\ReflectionFunction
- fixed error when composer vendor pathes were arrays, not just a string
- Since 3.0.0 internal encoding of UTF-8 was only enforced within Apps. This has changed again and is not enforced by Stubbles Core any more. If you want to enforce it you need to call
net\stubbles\lang\enforceInternalEncoding()
explicitly. - Due to removal of the default annotation cache and the
net\stubbles\cache
with 3.0.0 thenet\stubbles\ioc\module\PropertiesBindingModule
doesn't bind thenet.stubbles.cache.path
any more by default. In case you still require this path you need to explicitly enable it vianet\stubbles\ioc\module\PropertiesBindingModule::addPathType('cache')
, see https://github.com/stubbles/stubbles-core/wiki/Apps-properties#pathes-as-properties
- Deprecated
net\stubbles\ioc\App::persistAnnotations()
in favor of\net\stubbles\lang\persistAnnotations()
, will be removed with 4.0.0 - Deprecated
net\stubbles\ioc\App::persistAnnotationsInFile()
in favor of\net\stubbles\lang\persistAnnotationsInFile()
, will be removed with 4.0.0 - Deprecated
net\stubbles\lang\StringRepresentationBuilder
in favor of\net\stubbles\lang\__toString()
, will be removed with 4.0.0 - Introduced new functions in
net\stubbles\lang
properties()
,parseProperties()
andparsePropertiesFile()
reflect()
persistAnnotations()
and persistAnnotationsInFile()`enforceInternalEncoding()
__toString()
- Introduced new functions in
net\stubbles\peer
http()
headers()
parseHeaders()
createSocket()
createBsdSocket()
- implemented #58: make annotation cache configurable Please note that annotations are not cached inbetween requests automatically any more. To retain the old behaviour, you need to call
\net\stubbles\lang\reflect\annotation\AnnotationCache::startFromFileCache($projectPath . '/cache/annotations.cache');
In case you have an App instance you can call the newApp::persistAnnotations()
orApp::persistAnnotationsInFile()
method. See also updated documentation about annotation cache at https://github.com/stubbles/stubbles-core/wiki/Annotations#annotation-cache - Removed
vendor/bin/clearCache
. Due to changed annotation cache a generic mechanism for clearing the cache can't be provided any longer, applications have to implement their own solution. - Removed support for
post-install-cmd
andpost-update-cmd
. You should remove any such entries in your composer.json. - Removed package
net\stubbles\cache
, doesn't belong into core - Deprecated
net\stubbles\lang\Object
andnet\stubbles\lang\BaseObject
, no core class implements the interface or extends from the base class any more - Previously UTF-8 as internal encoding was always enforced, even if only one class was loaded. Now, UTF-8 is only enforced when creating an app instance via
net\stubbles\ioc\App::create()
ornet\stubbles\ioc\App::createInstance()
. If your application doesn't use one of these methods you need to enforce UTF-8 as internal encoding yourself.
- added
ReflectionClass::fromName()
- added
ReflectionObject::fromInstance()
- changed status of
net\stubbles\lang\StringRepresentationBuilder
from @internal to @api
- changed
net\stubbles\lang\types\datespan\Month
to always use current month, also on first day of month - added initial phar support to run stubbles-core from inside a phar
- added
net\stubbles\lang\ResourceLoader::getRoot()
to allow retrieval of root path in a non-static mockable call - fixed notice about array to string conversion in
net\stubbles\lang\StringRepresentationBuilder
- added
net\stubbles\peer\Uri::getQueryString()
- fixed line ending bug in
net\stubbles\streams\memory\MemoryInputStream
- fixed
net\stubbles\peer\http\HttpRequest
to not ignore query string for GET and HEAD requests - fixed bug in
net\stubbles\peer\HeaderList
with recognition of headers that contain a colon in their value
- Removed hostname binding with posix, wasn't reliable enough
net\stubbles\ioc\module\PropertiesBindingModule
can now optionally bind current working directory with namenet.stubbles.cwd
net\stubbles\ioc\module\PropertiesBindingModule
can now optionaly bind current hostname, usingnet.stubbles.hostname.nq
for non-qualified andnet.stubbles.hostname.fq
for qualified hostname- implemented issue #33: allow adhoc binding module using closures
- implemented issue #31: allow binding to closures
- Initial release.