mariuslundgard/php-util

A utility library for PHP 5.3+.

v0.1.0-beta.1 2014-08-09 21:18 UTC

This package is not auto-updated.

Last update: 2024-04-13 14:02:35 UTC


README

Build Status Coverage Status

Latest Stable Version

Utility functions and classes for PHP.

Examples

The Util\Dictionary class

Usage example:

<?php

require 'vendor/autoload.php';

use Util\Dictionary;

$dict = new Dictionary([
	'path.to.item'    => 123,
	'path.to.another' => 124,
]);

echo json_encode($dict->get()); // -> { "path": { "to": { "item": 123, "another": "124 " }}}
echo $dict['path.to.item'];     // -> 123

Using a Dictionary object for filesystem representation.

use Util\Dictionary;

$rootDir = dirname(__DIR__);

$dir = new RecursiveDirectoryIterator($rootDir);
$iter = new RecursiveIteratorIterator($dir);
$regex = new RegexIterator($iter, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH);

$phpFiles = new Dictionary([], [
    'delimiter' => '/',
]);

foreach ($regex as $key => $file) {
    $phpFiles[trim(realpath($file[0]), '/')] = 'Modified '.time_elapsed_string(filemtime($file[0]));
}

echo '<pre>';
echo json_encode($phpFiles[trim($rootDir, '/')], JSON_PRETTY_PRINT);
echo '</pre>';

// {
//     "example": {
//         "index.php": "Modified 13 hours ago"
//     },
//     "src": {
//         "array.php": "Modified 9 hours ago",
//         "object.php": "Modified 20 days ago",
//         "string.php": "Modified 2 days ago",
//         "time.php": "Modified 7 hours ago",
//         "Util": {
//             "Dictionary.php": "Modified 5 seconds ago"
//         }
//     },
//     ...

Using a Dictionary object for application configuration.

use Util\Dictionary;

class MyApplication
{
    protected $config;

    public function __construct(array $config = [])
    {
        $this->config = new Dictionary($config);
    }

    public function __get($property)
    {
        switch ($property) {

            case 'config':
                return $this->config;

            default:
                throw new Exception('Unknown application property: '.$property);
        }
    }

    public function configure(array $config)
    {
        $this->config->merge($config);

        return $this;
    }
}

$app = (new App())
    ->configure([
        'db.user' => 'root',
        'db.pass' => 'test',
    ]);

echo $app->config['db.user'];         // root
echo json_encode($app->config['db']); // { "user": "root", "pass": "test" }