forked from leftypol/leftypol
38 lines
810 B
PHP
38 lines
810 B
PHP
<?php
|
|
namespace Vichan;
|
|
|
|
use Vichan\Data\Driver\CacheDriver;
|
|
|
|
defined('TINYBOARD') or exit;
|
|
|
|
|
|
class Context {
|
|
private array $definitions;
|
|
|
|
public function __construct(array $definitions) {
|
|
$this->definitions = $definitions;
|
|
}
|
|
|
|
public function get(string $name): mixed {
|
|
if (!isset($this->definitions[$name])) {
|
|
throw new \RuntimeException("Could not find a dependency named $name");
|
|
}
|
|
|
|
$ret = $this->definitions[$name];
|
|
if (is_callable($ret) && !is_string($ret) && !is_array($ret)) {
|
|
$ret = $ret($this);
|
|
$this->definitions[$name] = $ret;
|
|
}
|
|
return $ret;
|
|
}
|
|
}
|
|
|
|
function build_context(array $config): Context {
|
|
return new Context([
|
|
'config' => $config,
|
|
CacheDriver::class => function($c) {
|
|
// Use the global for backwards compatibility.
|
|
return \cache::getCache();
|
|
}
|
|
]);
|
|
}
|