rougin / weasley
Utility belt for Slytherin micro-framework.
Installs: 2 100
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/rougin/weasley
Requires
- php: >=5.3.0
- rougin/slytherin: ~0.9
- vlucas/valitron: ~1.4
Requires (Dev)
- phpunit/phpunit: ~4.2|~5.7|~6.0|~7.0|~8.0|~9.0
- sanmai/phpunit-legacy-adapter: ~6.1|~8.0
- symfony/console: ~2.8|~3.0|~4.0|~5.0|~6.0
README
Weasley is a PHP package that provides generators, helpers, and utility classes for the Slytherin. Its goal is to improve the overall productivity when writing web applications based on Slytherin by reducing in writing code related to CRUD operations.
Installation
Install the Weasley package via Composer:
$ composer require rougin/weasley
Note
When using the weasley command, the Symfony Console must be installed first.
Once installed, kindly see the following features below provided by Weasley:
Code generators
Weasley provides commands that generates code based on the specified type (e.g., Check, Route, etc.). These commands allow Slytherin to be a rapid prototyping tool in creating web-based applications.
To access the list of available commands, kindly run its namesake command from the terminal:
$ vendor/bin/weasley
make:check
Creates a new check (validation) class based on Valitron.
make:handler
Creates a new HTTP Middleware class.
make:package
Creates a new Slytherin Integration class.
make:route
Creates a new HTTP route class.
HTTP routes
In creating web applications, Weasley also provides PHP classes to create HTTP routes based on the RESTful style.
Note
In other PHP frameworks, this is also known as Controllers.
HttpRoute
A simple HTTP route class for RESTful APIs.
JsonRoute
Similar with HttpRoute but the response will be returned in JSON format.
Third-party packages
To conform with the usage of IntegrationInterface from Slytherin, Weasley also provides the following third-party integrations with other PHP packages:
Laravel\Eloquent
This package enables the usage of Eloquent to Slytherin which is an Object-relational mapper (ORM) from Laravel. To use this package, kindly install its required package first in Composer:
$ composer require illuminate/database
Laravel\Blade
Laravel\Blade allows Slytherin to use Blade from Laravel for creating PHP templates using the Blade templating engine. Use the command below to install the specified package from Composer:
$ composer require illuminate/view
Laravel\Paginate
This is a simple third-party package that allows Eloquent to generate pagination links based on its models. Kindly use the command below to install this third-party package:
$ composer require illuminate/paginate
Session
Weasley also provides a simple implementation of the SessionHandlerInterface.
HTTP handlers
Weasley has the following HTTP middlewares (HTTP handlers in this case) to improve the handling of HTTP requests and its respective responses:
AllowCrossOrigin
Adds additional headers for Cross-origin resource sharing (CORS).
EmptyStringToNull
Converts the empty strings from request as null.
JsonContentType
Changes content response to application/json.
MutateRequest
A middleware that can be extended to mutate/transform values from the request.
SpoofHttpMethod
Replaces the HTTP verb from _method value.
TrimStringValue
Trims the strings from an incoming request.
Mutators
Provided by Weasley, mutators are classes that mutates (transforms) to a specified result (e.g., PSR-07 responses, API data, etc.):
JsonMutator
Mutates a PSR-07 response in JSON format.
RestMutator
Mutates a response created from the Laravel/Paginate package based on Paypal's API Style Guide.
Validation
Weasley also provides a simple validation class on top of Valitron using the Check class:
use Rougin\Weasley\Check; class UserCheck extends Check { protected $labels = [ 'name' => 'Name', 'email' => 'Email', 'age' => 'Age', ]; protected $rules = [ 'name' => 'required', 'setting' => 'required|email', 'type' => 'required|numeric', ]; }
Once created, the data can be submitted to the said class for validation:
$check = new UserCheck; $data = /* e.g., data from request */; if ($check->valid($data)) { // $data passed from validation } else { // Get the available errors --- $errors = $check->errors(); // ---------------------------- // Or get the first error only --- echo $check->firstError(); // ------------------------------- }
Testing
If there is a need to check the source code of Weasley for development purposes (e.g., creating fixes, new features, etc.), kindly clone this repository first to a local machine:
$ git clone https://github.com/rougin/weasley.git "Sample"
After cloning, use Composer to install its required packages:
$ cd Sample
$ composer update
Note
Please see also the build.yml of Weasley to check any packages that needs to be installed based on the PHP version.
Once the required packages were installed, kindly check the following below on how to maintain the code quality and styling guide when interacting the source code of Weasley:
Unit tests
Weasley also contains unit tests that were written in PHPUnit:
$ composer test
When creating fixes or implementing new features, it is recommended to run the above command to always check if the updated code introduces errors during development.
Code quality
To retain the code quality of Weasley, a static code analysis code tool named PHPStan is being used during development. To start, kindly install the specified package in the global environment of Composer:
$ composer global require phpstan/phpstan --dev
Once installed, PHPStan can now be run using its namesake command:
$ cd Sample
$ phpstan
Note
When running phpstan, it will use the phpstan.neon file which is already provided by Weasley.
Coding style
Aside from code quality, Weasley also uses a tool named PHP Coding Standards Fixer for maintaining an opinionated style guide. To use this tooling, it needs also to be installed in the Composer's global environment first:
$ composer global require friendsofphp/php-cs-fixer --dev
After its installation, kindly use the php-cs-fixer command in the same Weasley directory:
$ cd Sample
$ php-cs-fixer fix --config=phpstyle.php
The phpstyle.php file provided by Weasley currently follows the PSR-12 standard as its baseline for the coding style and uses Allman as its indentation style.
Note
Installing both PHPStan and PHP Coding Standards Fixer requires a minimum version of PHP at least 7.4.
Changelog
Please see CHANGELOG for more information what has changed recently.
License
The MIT License (MIT). Please see LICENSE for more information.