Releases: userfrosting/framework
5.1.3
What's changed
- [Config] Fix issue with
getBool
,getString
,getInt
andgetArray
where a null value could be returned even if a default parameter was provided when the data did in fact returnnull
, making the return value not type safe as it should be.
Full Changelog: 5.1.2...5.1.3
5.1.2
5.1.1
What's changed
- Fix InputArray in Fortress (See userfrosting/UserFrosting#1251)
- Update PHPStan config
- Add VSCode config
Full Changelog: 5.1.0...5.1.1
5.1.0
What's changed
- Removed Assets
- Drop PHP 8.1 support, add PHP 8.3 support
- Update to Laravel 10
- Update to PHPUnit 10
- SprinkleManager is a bit more strict on argument types. Recipe classed must be a
class-string
. The actual instance of the class will now be rejected (it wasn't a documented feature anyway).
Fortress
Complete refactoring of Fortress. Mostly enforcing strict types, updating PHPDocs, simplifying code logic and making uses of new PHP features and method. Most classes have been deprecated and replaced by new classes with updated implementation. In general, instead of passing the schema in the constructor of Adapters, Transformers and Validators class, you pass it directly to theses class methods. This makes it easier to inject the classes as services and reuse the same instance with different schemas. Checkout the documentation for more information on new class usage.
-
UserFrosting\Fortress\RequestSchema
constructor first argument now accept the schema data as an array, as well as a string representing a path to the schema json or yaml file. The argument can still be omitted to create an empty schema. This change makesUserFrosting\Fortress\RequestSchema\RequestSchemaRepository
obsolete and and such been deprecated. For example:// Before $schemaFromFile = new \UserFrosting\Fortress\RequestSchema('path/to/schema.json'); $schemaFromArray = new \UserFrosting\Fortress\RequestSchema\RequestSchemaRepository([ // ... ]); // After $schemaFromFile = new \UserFrosting\Fortress\RequestSchema('path/to/schema.json'); $schemaFromArray = new \UserFrosting\Fortress\RequestSchema([ // ... ]);
-
UserFrosting\Fortress\RequestSchema\RequestSchemaInterface
now extends\Illuminate\Contracts\Config\Repository
. The interface itself is otherwise unchanged. -
UserFrosting\Fortress\RequestDataTransformer
is deprecated and replaced by\UserFrosting\Fortress\Transformer\RequestDataTransformer
(notice the difference in the namespace!).\UserFrosting\Fortress\RequestDataTransformerInterface
is also deprecated and replaced by\UserFrosting\Fortress\Transformer\RequestDataTransformerInterface
. When using the new class, instead of passing the schema in the constructor, you pass it directly totransform()
ortransformField()
. For example :// Before $transformer = new \UserFrosting\Fortress\RequestDataTransformer($schema); $result = $transformer->transform($data, 'skip'); // After $transformer = new \UserFrosting\Fortress\Transformer\RequestDataTransformer(); $result = $transformer->transform($schema, $data, 'skip');
-
\UserFrosting\Fortress\ServerSideValidator
is deprecated and replaced by\UserFrosting\Fortress\Validator\ServerSideValidator
(notice the difference in the namespace!).\UserFrosting\Fortress\ServerSideValidatorInterface
is also deprecated and replaced by\UserFrosting\Fortress\Validator\ServerSideValidatorInterface
. When using the new class, instead of passing the schema in the constructor, you pass it directly tovalidate()
. For example :// Before $validator = new \UserFrosting\Fortress\ServerSideValidator($schema, $this->translator); $result = $validator->validate($data); // After $adapter = new \UserFrosting\Fortress\Validator\ServerSideValidator($this->translator); $result = $validator->validate($schema, $data);
-
UserFrosting\Fortress\Adapter\FormValidationAdapter
is deprecated.
Instead of defining the format in therules
method, you simply use of the appropriate class for the associated format.rules(...)
Replacement class $format = json
&$stringEncode = true
UserFrosting\Fortress\Adapter\FormValidationJsonAdapter
$format = json
&$stringEncode = false
UserFrosting\Fortress\Adapter\FormValidationArrayAdapter
$format = html5
UserFrosting\Fortress\Adapter\FormValidationHtml5Adapter
UserFrosting\Fortress\Adapter\JqueryValidationAdapter
is deprecated.
Instead of defining the format in therules
method, you simply use of the appropriate class for the associated format.rules(...)
Replacement class $format = json
&$stringEncode = true
UserFrosting\Fortress\Adapter\JqueryValidationJsonAdapter
$format = json
&$stringEncode = false
UserFrosting\Fortress\Adapter\JqueryValidationArrayAdapter
All adapters above now implements
UserFrosting\Fortress\Adapter\ValidationAdapterInterface
for easier type-hinting.Finally, instead of passing the schema in the constructor, you now pass it directly to
rules()
.For example :
// Before $adapter = new FormValidationAdapter($schema, $this->translator); $result = $adapter->rules('json', false); // After $adapter = new FormValidationArrayAdapter($this->translator); $result = $adapter->rules($schema);
-
ClientSideValidationAdapter
abstract class replaced withFromSchemaTrait
trait +ValidationAdapterInterface
interface. -
FormValidationHtml5Adapter
Will now throw an exception on missing field param, instead of returning null. -
In
FormValidationHtml5Adapter
, when usingidentical
rule, the validation used to be applied to the "confirmation" field. It will now be applied to the source field, making it consistent with array|json format. For example, ifpassword
requires to be identical topasswordc
, the validation was added to thepasswordc
field. Now it's applied topassword
.
Config
- Methods
getBool
,getString
,getInt
&getArray
now returnnull
if key doesn't exist, to make it on par with parentget
method.
Alert
- Messages are now translated at read time (#1156, #811). Messages will be translated when using
messages
andgetAndClearMessages
.addMessage
now accept the optional placeholders, which will be stored with the alert message.addMessageTranslated
is deprecated. - Translator is not optional anymore.
setTranslator
method has been removed. addValidationErrors
is deprecated (N.B.: It can't accept the new\UserFrosting\Fortress\Validator\ServerSideValidatorInterface
)
UniformResourceLocator
- Two locations cannot have the same name anymore. An
InvalidArgumentException
will be thrown otherwise. (Ref userfrosting/UserFrosting#1243). - [DEPRECATION] Location's
getSlug
is deprecated (redundant with the name and not really used).
Full Changelog: 5.0.0...5.1.0
5.0.0
With version 5, this repo can be used as a bare bone Slim & Symfony Console application. It include the necessary routing class, PHP-DI as the Dependency Injection Container, a PSR EventDispatcher, etc. SprinkleManager has also been moved from Core/System Sprinkle and completely rewritten.
It's necessary for the SprinkleManager, Slim and Symfony (Bakery) to be outside of the Core Sprinkle so it can be properly managed. All extra feature (template, database, config, etc.) are left for the Core Sprinkle. The old sprinkle.json
has been replace with SprinkleRecipe
interface.
Version 5 also requires PHP 8.0 and up. With that in mind, most of the code has been updated to support PHP 8 and make use of it's new features. Code quality has also been stepped up, with PHPStan analysis added to the build process.
Global
Added
- Moved Alert into Framework from Core Sprinkle
- Added Bakery / Symfony Console app :
UserFrosting\Bakery\Bakery
- UserFrosting / Slim 4 Web app :
UserFrosting\UserFrosting
- Moved
SprinkleManager
from main repo. - Added custom Event Dispatcher and Listeners :
UserFrosting\Event\EventDispatcher
&UserFrosting\Event\SprinkleListenerProvider
Dependencies
- Drop PHP 7.3 & 7.4 support
- Updated
twig/twig
to^3.3
Code Quality
- Updated PHPStan config and added Github Action for automatic code analysis for UniformResourceLocator & Config (with no issues on max level)
- Updated PHP-CS-Fixer & StyleCI config
Assets
Assets module is now deprecated and will be removed in UserFrosting 5.1 !
Removed
UserFrosting\Assets\ServeAsset\SlimServeAsset
has been removed. Code has been moved into Core Sprinkle
Bakery
Added
UserFrosting\Bakery\WithSymfonyStyle
moved to this repo from Core.
Testing
- Added helper class to test Bakery command, Container, CustomAssertionsTrait, HttpTester, TestCase, etc.
Support
Removed
- These HTTP exceptions have been removed and replace with new system in Core Sprinkle :
BadRequestException
ForbiddenException
HttpException
NotFoundException
UserFrosting\Support\Util\Util::normalizePath
has been removed. UseUserFrosting\UniformResourceLocator\Normalizer::normalizePath
instead.
UniformResourceLocator
Changes
- Remove dependency on
rockettheme/toolbox
by integrating our ownStreamWrapper\Stream
andStreamBuilder
findResource
andgetResource
now returnnull
if a resource is not found instead offalse
Added
- Added
readonly
option for streams. Files accessed using a readonly scheme will be protected against destructive action at the streamwrapper level.
Deprecated
findResource
is deprecated. UsegetResource
insteadfindResources
is deprecated. UsegetResources
insteadregisterStream
andregisterSharedStream
are deprecated. UseaddStream
insteadregisterLocation
is deprecated. UseaddLocation
instead
Removed
- Scheme Prefix has been removed
- Resource :
setLocation
,setPath
,setLocatorBasePath
andsetStream
methods have been removed - ResourceLocation :
setName
andsetPath
methods have been removed - ResourceStream :
setScheme
,setPath
andsetShared
methods have been removed - Deprecated
ResourceLocator::addPath
method removed ResourceLocator::setBasePath
method removed
Fortress
Fix
- Fix userfrosting/UserFrosting#1216 - Throw error when RequestSchema path doesn't exist
Removed
- Removed deprecated method
getSchema
inRequestSchema
Full Changelog: 4.6.1...5.0.0
Upgrade Guide: https://learn.userfrosting.com/upgrading/46-to-50
5.0.0-rc1
Full Changelog: 5.0.0-beta5...5.0.0-rc1
5.0.0-beta5
5.0.0-beta4
5.0.0-beta3
5.0.0-beta2
What's Changed
- Add
UserFrosting\Cache\Cache
alias forIlluminate\Cache\Repository
, for easier dependency injection - Officially deprecate Assets framework
Full Changelog: 5.0.0-beta1...5.0.0-beta2