Common classes package. Contains some common classes written for CIDRAM, phpMussel, etc, available for additional use elsewhere via this package.

v2.12.0 2023-12-29 10:48 UTC


v1: PHP >= 5.4 v2: PHP >= 7.2 License: GPL v2

Common Classes Package.

The common classes package is intended to provide some of the classes that I originally wrote for common use by CIDRAM, phpMussel, etc as a separate, redistributable package, available to be readily integrated and used with other projects and packages via Composer.

All classes in the common classes package use the namespace Maikuolan\Common.

The common classes package currently contains the following classes:

  • Cache: A simple, unified cache handler used by the CIDRAM and phpMussel projects for their caching needs. Currently, it supports APCu, Memcached, Redis, PDO, and flatfile caching.
  • CommonAbstract: Common abstract for the common classes package. Not to be instantiated directly; To be extended by the other classes.
  • ComplexStringHandler: The complex string handler class provides an easy way to iterate over the parts of a given string, identified by a given pattern, in order to execute a given closure to those parts of the given string, or to the glue that separates those parts.
  • DelayedIO: Provides an easy, simple solution for when needing to read and update a number of files, but delay rewriting the files for a while.
  • Demojibakefier: Intended to normalise the character encoding of a given string to a preferred character encoding when the given string's byte sequences don't match the expectations of the preferred character encoding. Useful in cases where a block of data might conceivably be composed of several different unspecified, unknown encodings.
  • Events: Allows the orchestration of "events" throughout a codebase by providing some simple methods to assign handlers to a particular event and to subsequently invoke those handlers at a later point in the codebase where the "event" is to occur.
  • IPHeader: Attempts to resolve an originating IP address from a preferred source, or REMOTE_ADDR if the preferred source isn't available.
  • L10N: Used by the CIDRAM and phpMussel projects to handle L10N data, the L10N handler reads in an array of L10N strings and provides some safe and simple methods for manipulating and returning those strings when needed, and for handling cardinal plurals, where integers and fractions are concerned alike, based upon the pluralisation rules specified by the L10N from a range of various pluralisation rules available, to be able to suit the needs of most known languages.
  • Matrix: Facilitates the generation of multidimensional arrays to an arbitrarily specified depth and number of elements, and facilitates iteration through those multidimensional arrays in any direction (whether up and down a particular a array, across different depths, etc) via arbitrary callables and closures.
  • NumberFormatter: Used by the CIDRAM and phpMussel projects to format numbers generated by their front-end pages, the class provides a more controllable, customisable mechanism for number formatting than PHP's internal number_format() function.
  • Operation: Used by the CIDRAM and phpMussel projects for various operations related to dependency management (an integral part of the internal updates system).
  • Request: Used by the CIDRAM and phpMussel projects to send outbound requests through cURL.
  • YAML: Used by the CIDRAM and phpMussel projects to handle YAML data.

How to install:

The recommended way to install it is by using Composer:

composer require maikuolan/common

You can, however, download the classes you need from this repository manually, if you want to do so.

After you've downloaded the package, or any needed classes, PSR-4 autoloading is preferred way to access the classes (particularly if you're using a large number of different, unrelated classes). If you're installing the package via Composer, all you have to do is require_once 'vendor/autoload.php'; and everything will be taken care of. Alternatively, if you're installing the package or its classes manually (or without Composer), or if you don't want to use a PSR-4 autoloader, you can simply require or include any needed classes into your projects by using an include or require statement in your code, to point to the needed classes in any PHP code that needs them.

Other information:


Provided using the GNU General Public License version 2.0 (GPLv2).

For support:

Please use the issues page of this repository.

For contributors:

[] Want to help?

Last Updated: 14 September 2023 (2023.09.14).