66 lines
1.4 KiB
PHP
66 lines
1.4 KiB
PHP
<?php
|
||
|
||
/**
|
||
* Класс для короткого доступа к файлам / папкам
|
||
*/
|
||
class Shortcut
|
||
{
|
||
static $instance = null;
|
||
public $variables = array();
|
||
public $list = array();
|
||
|
||
// Singleton pattern
|
||
static public function getInstance()
|
||
{
|
||
if (self::$instance == null) {
|
||
self::$instance = new Shortcut();
|
||
}
|
||
return self::$instance;
|
||
}
|
||
|
||
/**
|
||
* Добавляет ярлык с именем $prefix
|
||
* Путь может содержать переменные
|
||
*/
|
||
public function addUrl($prefix, $path)
|
||
{
|
||
$this->list[$prefix] = $path;
|
||
}
|
||
|
||
/**
|
||
*
|
||
*/
|
||
public function addVar($name, $value)
|
||
{
|
||
$this->variables['$' . $name] = $value;
|
||
}
|
||
|
||
/**
|
||
* Возвращает путь по имени ярлыка
|
||
*/
|
||
static function getUrl($prefix, $name = null, $name1 = null)
|
||
{
|
||
$shortcut = self::getInstance();
|
||
|
||
$names = $shortcut->variables;
|
||
if ($name) {
|
||
$names['$name'] = $name;
|
||
}
|
||
if ($name1) {
|
||
$names['$name1'] = $name1;
|
||
}
|
||
|
||
if (isset($shortcut->list[$prefix])) {
|
||
return strtr($shortcut->list[$prefix], $names);
|
||
}
|
||
return null;
|
||
}
|
||
|
||
static function expand($path)
|
||
{
|
||
$shortcut = self::getInstance();
|
||
$names = $shortcut->variables;
|
||
return strtr($path, $names);
|
||
}
|
||
|
||
}
|