/php-utilities

PHP utility packages.

Primary LanguagePHPMIT LicenseMIT

#AbstractFactory

/**
 * namespace Vehicle;
 * use Utilities\AbstractFactory;
 *
 * class Factory extends \Utilities\AbstractFactory {
 *	
 * 		public static function __callStatic($factory, $parameters) {
 *			return parent::$factory($parameters);
 *		}
 *
 *		public static function register() {
 *			parent::setNamespace("\Vehicle\Type");
 *			parent::addFactories("Car", "Truck", "Motorcycle");
 *		}
 * }
 */

/**
 * namespace Vehicle\Type;
 * 
 * class Car extends \Vehicle\Motorized {
 *
 *     public function __construct($make, $model, $color) {
 *         $this->setMake($make);
 *         $this->setModel($model);
 *         $this->setColor($color);
 *     }
 * }
 */

require_once($_SERVER['DOCUMENT_ROOT']."/path/to/Utilities/Loader.php");
\Utilities\Loader::register();

\Vehicle\Factory::register();

$car = \Vehicle\Factory::car("Ford", "Mustang", "red");
# $car is instance of \Vehicle\Type\Car

echo $car->getColor(); // red [Method in \Vehicle\Motorized]

#Cipher

require_once($_SERVER['DOCUMENT_ROOT']."/path/to/Utilities/Loader.php");
\Utilities\Loader::register();

$cipher = \Utilities\Cipher(MCRYPT_3DES, MCRYPT_MODE_CBC, MCRYPT_RAND);

$cipher->setKey('my secret key')

$encrypted = $cipher->encrypt('my data.');
$decrypted = $cipher->decrypt($encrypted);
# ... loader ...

$cipher = \Utilities\Cipher(MCRYPT_3DES, MCRYPT_MODE_CBC, MCRYPT_RAND);

$data1 = $cipher->encrypt('my data.', 'my secret key 1');
$data2 = $cipher->encrypt('my data.', 'my secret key 2'); # you can specify different keys.

$data1 = $cipher->decrypt($data1); # Does not decrypt, using `my secret key 2` still.
$data2 = $cipher->decrypt($data2); # Does decrypt.
$data1 = $cipher->decrypt($data1, 'my secret key 1'); # Does encrypt.

#Loader

require_once($_SERVER['DOCUMENT_ROOT']."/path/to/Utilities/Loader.php");
\Utilities\Loader::register();

# Get list of all loaded class files.
foreach (\Utilities\Loader::log() as $filename) {
	echo $filename."\n";
}

#Juggernaut

require_once($_SERVER['DOCUMENT_ROOT']."/path/to/Utilities/Loader.php");
\Utilities\Loader::register();

$jugger = new Juggernaut();
# Default iterations set to 100,000.

function test_for_loop() {
	for ($i = 0; $i < 1000; $i++) {
		// Do nothing.
	}
}

$jugger->iterate("test_for_loop");

# key := e63ded35237df6104212beb110810766 
#     [ test := iterate          callback := test_for_loop    time := 4995.49ms ] @   100000 iterations
# 
# /**
#  *   5. function test_for_loop() {
#  *   6. 	for ($i = 0; $i < 1000; $i++) {
#  *   7. 		// Do nothing.
#  *   8. 	}
#  *   9. }
#  */

echo "<pre>".PHP_EOL;
echo $jugger->log();
echo "</pre>".PHP_EOL;

# Or raw array...
print_t($jugger->log(true));

# Array
# (
#     [e63ded35237df6104212beb110810766] => Array
#         (
#             [name] => test_for_loop
#             [test] => iterate
#             [time] => 4.9954919815063
#             [trys] => 100000
#         )
# 
# )

ErrorHandler

namespace MyApp;
use Utilities\ErrorHandler;

class MyClass {
	
	public function __construct() {
		\Utilities\ErrorHandler::register($this);
	}

	public function __destruct() {
		\Utilities\ErrorHandler::unregister();
	}
}

TypeCheck

function error($errno, $errstr = null, $errfile = null, $errline = null) {
	\Utilities\TypeCheck("int", "string", "string" "int");
	if (error_reporting() && $errno) {
		throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
	}
}