Skip to content

Commit 3054e4a

Browse files
committed
feat: added functionalizer
1 parent 6e64932 commit 3054e4a

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/functions.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,30 @@ function _env($key, $default = null)
6161
return $value;
6262
}
6363
}
64+
65+
if (!function_exists('make')) {
66+
/**
67+
* Cache and use a class
68+
*
69+
* @template T of object
70+
* @param class-string<T>|T $service
71+
* @return T
72+
*/
73+
function make($service)
74+
{
75+
if (is_string($service)) {
76+
$serviceName = $service;
77+
$service = (new $service);
78+
} else {
79+
$serviceName = get_class($service);
80+
}
81+
82+
if (!\Leaf\Config::getStatic("classes.$serviceName")) {
83+
\Leaf\Config::singleton("classes.$serviceName", function () use ($service) {
84+
return $service;
85+
});
86+
}
87+
88+
return \Leaf\Config::get("classes.$serviceName");
89+
}
90+
}

0 commit comments

Comments
 (0)