1. Go to this page and download the library: Download flying/config library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
flying / config example snippets
use Flying\Config\AbstractConfig;
class MyCache extends AbstractConfig
{
protected function initConfig()
{
parent::initConfig();
$this->mergeConfig([
'enabled' => true, // Boolean value
'path' => null, // Path to directory where to store files, no path is configured by default
'prefix' => null, // Prefix for cache entries (string or null)
'hash_method' => 'md5', // Hash method to use for cache keys generation, accepted values are 'md5' and 'sha1'
'directory_depth' => 1, // Depth of hashed directories structure (integer greater then 0)
'lifetime' => 3600, // Cache entry lifetime in seconds
]);
}
}
if ($this->getConfig('enabled')) {
// Cache is enabled, calculate hash of cache key
$method = $this->getConfig('hash_method');
$hash = $method($key);
// Proceed with cache entry ...
}
protected function validateConfig($name, &$value)
{
switch ($name) {
case 'enabled':
$value = (boolean)$value;
break;
case 'path':
if ($value !== null) {
// Check if path is available
if (!is_dir($value)) {
throw new \InvalidArgumentException('Unavailable path to cache directory: ' . $value);
}
}
break;
case 'prefix':
if (strlen($value)) {
$value = rtrim($value, '_') . '_';
} else {
$value = null;
}
break;
case 'hash_method':
if (is_string($value)) {
if (!in_array($value, ['md5', 'sha1'])) {
trigger_error('Invalid hash method: ' . $value, E_USER_WARNING);
return false;
}
} else {
trigger_error('Hash method must be a string', E_USER_WARNING);
return false;
}
break;
case 'directory_depth':
$value = max(min((int)$value, 3), 1);
break;
case 'lifetime':
if ($value!==null) {
$value = max(min((int)$value, 86400), 1);
}
break;
default:
return parent::validateConfig($name, $value);
break;
}
return true;
}
protected function initConfig()
{
parent::initConfig();
$this->mergeConfig([
'cache' => null, // Cache object instance will be here
]);
}
protected function lazyConfigInit($name)
{
switch($name) {
case 'cache':
return new My\Cache();
break;
default:
return parent::lazyConfigInit($name);
break;
}
}
// Create instance of object with 'cache' configuration option
$object = new My\Object();
// 'cache' option now remains null internally
$cache = $object->getConfig('cache');
// $cache contains instance of My\Cache initialized by request
$cache->save();
protected function initConfig()
{
parent::initConfig();
$this->mergeConfig([
'cache', // No values are
/**
* Save cache entry
*
* @param string $key Cache entry key
* @param mixed $contents Cache entry contents
* @param array $config OPTIONAL Additional configuration options
* @return boolean
*/
public function save($key, $contents, $config = null)
{
// At this moment we can't tell anything about contents of $config argument
$config = $this->getConfig($config);
// And now we can be sure that $config stores complete set
// of object's configuration options with valid values!
// We can safely keep going with logic of this method ...
}
$config = $this->getConfig();
foreach($config as $key => $value) {
if (\Flying\Config\ConfigurableInterface::CLASS_ID_KEY === $key) {
continue;
}
// ...
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.