rougin / weasley
Utility belt for Slytherin micro-framework.
Installs: 1 694
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Open Issues: 0
Requires
- php: >=5.3.0
- rougin/slytherin: ~0.9
- symfony/console: ~2.8|~3.0|~4.0|~5.0|~6.0
- 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
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
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.