netherphp/common

Things that were found useful and needed everywhere.

v5.0.34 2024-04-11 00:41 UTC

README

Packagist Build Status codecov

A collection of things that made no sense as their own library and are typically needed by every project I ever build at some point.

Classes of Note

use Nether\Common;

Common\Prototype

Base class that provides a default constructor designed to handle filling in the object from a keyed dataset, for example an array that is the result row from a database query. Also provides by default access to all the attribute handling packages.

Common\Datastore

A data storage object so that arrays of data can be manipulated from an OOP interface with a lot of common methods so where the current dataset can be manipulated or return a fresh datastore with the modified dataset.

Common\PasswordTester

A thing that can validate if a password is complex enough based on a few rules that can be customised. It can additionally then explain why it failed to pass.

Common\Units\Bytes

A thing that when given an integer of a filesize in bytes can print back the info in a human readable format in units of choice (example: MB or MiB).

Common\Units\Timeframe

When given two dates can print back how much time is between them in a human readable format of choice. Can handle both time since and time until.

Traits of Note

use Nether\Common;

Common\Package\ClassInfoPackage

Bolt onto a class to provide access for reading the attributes assigned to the class.

Common\Package\MethodInfoPackage

Bolt onto a class to provide access for reading the attributes assigned to the methods within the class.

Common\Package\PropertyInfoPackage

Bolt onto a class to provide access for reading the attributes assigned to the properties within the class.

DEVELOPER NOTES

  • PHP Constant: UNIT_TEST_GO_BRRRT=TRUE
  • if(defined('UNIT_TEST_GO_BRRRT'))

This constant is defined by the phpunit.xml file and some code uses it to alter its behaviour while the test suite is running. Primarily, code which is designed to exit() seems to make PHPUnit explode.

  • ENV Variable: UNIT_TEST_HITS_HARD=1
  • if(isset($_ENV['UNIT_TEST_HITS_HARD']))

This variable is defined by the Github Actions phpunit.yaml file. When defined will allow some unit tests to try harder to achieve full coverage, which will include performing system altering tasks to make sure they work.