rougin/weasley

Utility belt for Slytherin micro-framework.

v0.7.0 2024-04-08 03:01 UTC

This package is auto-updated.

Last update: 2024-11-19 08:31:02 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Total Downloads

Weasley is an utility package in PHP that provides generators, helpers, and utilities for Slytherin. Its goal is to improve the overall productivity when writing web applications based on the Slytherin PHP micro-framework.

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.