Common Saritasa classes and helpers, that can be used universally in any application. This package should not depend on any framework or library.
Install the saritasa/php-common
package:
$ composer require saritasa/php-common
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) { ... }
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
Reusable wrapper for preg_match;
Example:
$isEmail = new RegExp('/\w+@\w+\.\w+/');
$result = $isEmail('test@it');
Throw this, if you find erroneous configuration.
Example:
$payPalKey = config('services.paypal_key');
if (!$payPalKey) {
throw new ConfigurationException("PayPal key is not configured");
}
Throw this, if you implement paging and encounter an unrecoverable problem
Throw this, if you implement payment service or wrapper around payment service and encounter an unrecoverable problem.
This package must:
- Do not depend on any framework or library
- Do not depend on other Saritasa packages
- Do not register any providers
- Create fork, checkout it
- Develop locally as usual. Code must follow PSR-1, PSR-2 - run PHP_CodeSniffer to ensure, that code follows style guides
- Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
- Update README.md to describe new or changed functionality
- Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
- When ready, create pull request
If you have GNU Make installed, you can use following shortcuts:
make cs
(instead ofphp vendor/bin/phpcs
) - run static code analysis with PHP_CodeSniffer to check code stylemake csfix
(instead ofphp vendor/bin/phpcbf
) - fix code style violations with PHP_CodeSniffer automatically, where possible (ex. PSR-2 code formatting violations)make test
(instead ofphp vendor/bin/phpunit
) - run tests with PHPUnitmake install
- instead ofcomposer install
make all
or justmake
without parameters - invokes described above install, cs, test tasks sequentially - project will be assembled, checked with linter and tested with one single command