Newer
Older
* Commonly used classes used in the WebBasics package.
*
* @author Taddeus Kroes
* @date 13-07-2012
*/
* Base class for instantiable classes in the WebBasics package.
*
* The base class defines a static 'create' method that acts as a chainable
* shortcut for the class constructor:
* <code>
* class Foo extends Base {
* function __contruct($bar, $baz) {
* $this->bar = bar;
* $this->baz = baz;
* }
* }
*
* $foo = Foo::create('bar', 'baz');
* // is equivalent to:
* $foo = new Foo('bar', 'baz');
* </code>
*
* The advantage of the 'create' constructor is that is allows chaining:
* <code>
* Foo::create('bar', 'baz')->method();
* // as opposed to:
* $foo = new Foo('bar', 'baz');
* $foo->method();
* </code>
*/
abstract class Base {
/**
* Create a new object of the called class.
*
* This function provides a chainable constructor, which is not possible
* using plain PHP code.
*
* @returns mixed
*/
final static function create(/* [ arg0 [ , ... ] ] */) {
$args = func_get_args();
$class = get_called_class();
$rc = new \ReflectionClass($class);
return $rc->newInstanceArgs($args);
}
Taddeus Kroes
committed
/**
* Append a slash ('/') to the given directory name, if it is not already there.
*
* @param string $directory The directory to append a slash to.
* @return string
*/
Taddeus Kroes
committed
return $directory[strlen($directory) - 1] == '/' ? $directory : $directory.'/';
}
}
/**
* Exception, thrown when a required file does not exist.
*
*/
class FileNotFoundError extends \RuntimeException {
/**
* Create a new FileNotFoundError instance.
*
* Sets an error message of the form 'File "path/to/file.php" does not exist.'.
*
* @param string $path Path to the file that does not exist.
* @param bool $is_dir Whether the path points to a directory (defaults to false).
function __construct($path, $is_dir=false) {
$this->message = sprintf('%s "%s" does not exist.', $is_dir ? 'Directory' : 'File', $path);
* Format a string using parameters in an associative array.
*
* <code>
* echo asprintf('foo %(bar)', array('bar' => 'baz')); // prints 'foo baz'
* </code>
* @param array $params An associative array with parameters that are used in $format.
*/
function asprintf($format, array $params) {
return preg_replace_callback(
function($matches) use ($params) {
return (string)$params[$matches[1]];
},
$format
);
}
?>