saritasa/php-common

Saritasa classes, that can be universally used in any application

1.2.2 2022-10-10 11:52 UTC

This package is auto-updated.

Last update: 2024-04-10 15:04:19 UTC


README

PHP Unit PHP CodeSniffer CodeCov Release PHPv Downloads

Common Saritasa classes and helpers, that can be used universally in any application. This package should not depend on any framework or library.

Usage

Install the saritasa/php-common package:

$ composer require saritasa/php-common

Available classes

Enum

Alternative for SplEnum class. Designed to be container for repeatedly used set of constants.

Example:

class Gender extends Saritasa\Enum
{
    const MALE = 'Male';
    const FEMALE = 'Female';
}

then somewere in code:

$allGenders = Gender::getConstants();
$gender = new Gender($stringValue); // Will throw UnexpectedValueException on unknown value;
function getGenderDependentValue(Gender $gender) { ... }

Dto

A simple DTO, that can convert associative array to strong typed class with fields and back:

/**
 * @property-read string $name Person full name
 * @property-read string $address Street address
 * @property-read string $city City
 * @property-read string $state State
 * @property-read string $zip Zip Code
 */
class Address extends Dto
{
    protected $name;
    protected $address;
    protected $city;
    protected $state;
    protected $zip;
}
...
$address = new Address($request->all()) // Read only Address fields from HTTP Request
$address->toArray() // Convert to assotiative array
$address->toJson()  // Serialize to JSON format

RegExp

Reusable wrapper for preg_match;

Example:

$isEmail = new RegExp('/\w+@\w+\.\w+/');
$result = $isEmail('test@it');

Exception Definitions

ConfigurationException

Throw this, if you find erroneous configuration.

Example:

$payPalKey = config('services.paypal_key');
if (!$payPalKey) {
    throw new ConfigurationException("PayPal key is not configured");
}

PagingException

Throw this, if you implement paging and encounter an unrecoverable problem

PaymentException

Throw this, if you implement payment service or wrapper around payment service and encounter an unrecoverable problem.

Contributing

Requirements

This package must:

  • Do not depend on any framework or library
  • Do not depend on other Saritasa packages
  • Do not register any providers
  1. Create fork, checkout it
  2. Develop locally as usual. Code must follow PSR-1, PSR-2 - run PHP_CodeSniffer to ensure, that code follows style guides
  3. Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
  4. Update README.md to describe new or changed functionality
  5. Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
  6. When ready, create pull request

Make shortcuts

If you have GNU Make installed, you can use following shortcuts:

  • make cs (instead of php vendor/bin/phpcs) - run static code analysis with PHP_CodeSniffer to check code style
  • make csfix (instead of php vendor/bin/phpcbf) - fix code style violations with PHP_CodeSniffer automatically, where possible (ex. PSR-2 code formatting violations)
  • make test (instead of php vendor/bin/phpunit) - run tests with PHPUnit
  • make install - instead of composer install
  • make all or just make without parameters - invokes described above install, cs, test tasks sequentially - project will be assembled, checked with linter and tested with one single command

Resources