19 declare(strict_types=1);
31 $component_lookup = array_flip(
33 fn(
$c) =>
$c->getComponentName(),
68 require_once(__DIR__ .
"/../vendor/composer/vendor/autoload.php");
84 $use = $this->
renderUse($component_lookup, $component);
85 $seek = $this->
renderSeek($component_lookup, $component);
86 $pull = $this->
renderPull($component_lookup, $component);
99 \$component_{$me}->init(\$null_dic, \$implement[$me], \$use, \$contribute[$me], \$seek, \$provide[$me], \$pull, \$internal);
108 $r = $in->getResolvedBy()[0];
109 $p =
$r->aux[
"position"];
110 $o = $component_lookup[
$r->getComponent()->getComponentName()];
111 $use .=
"\n" . <<<PHP
112 \$use[{$in->getName()}::class] = fn() => \$implement[{$o}][{
$r->getName()}::class .
"_{$p}"];
122 $rs = $in->getResolvedBy();
125 foreach ($rs as
$r) {
126 $p = $r->aux[
"position"];
127 $o = $component_lookup[$r->getComponent()->getComponentName()];
128 $u[] =
"\$contribute_{$o}";
130 \$contribute[$o][{$r->getName()}::class .
"_{$p}"],
133 $u = join(
", ", array_unique($u));
134 $seek .=
"\n" . <<<PHP
135 \$seek[{$in->getName()}::class] = fn() => [{
$a}
146 $r = $in->getResolvedBy()[0];
147 $o = $component_lookup[
$r->getComponent()->getComponentName()];
148 $pull .=
"\n" . <<<PHP
149 \$pull[{$in->getName()}::class] = fn() => \$provide[{$o}][{
$r->getName()}::class];
158 foreach ($components as $component) {
159 $p = $component_lookup[$component->getComponentName()];
165 \$entry_points = [{$entry_points}
168 if (!isset(\$entry_points[\$name])) {
169 throw new \\LogicException(
"Unknown entry point: \$name.");
172 return \$entry_points[\$name]()->enter();
182 if (
$out->getName() !== \ILIAS\Component\EntryPoint::class) {
185 $p =
$out->aux[
"position"];
186 $n = str_replace(
"\"",
"\\\"",
$out->aux[
"entry_point_name"]);
187 $entry_points .=
"\n" . <<<PHP
188 "$n" => fn() => \$contribute[{$me}][ILIAS\Component\EntryPoint::class .
"_{$p}"],
192 return $entry_points;
renderSeek(array $component_lookup, OfComponent $component)
renderComponent(array $component_lookup, OfComponent $component)
render(OfComponent ... $components)
renderEntryPoints(int $me, OfComponent $component)
An object that looks like a Dependency Injection Container but actually does nothing.
renderPull(array $component_lookup, OfComponent $component)
getOutDependenciesOf(OutType $type)
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
renderUse(array $component_lookup, OfComponent $component)
getInDependenciesOf(InType $type)
renderEntryPointsSection(array $component_lookup, OfComponent ... $components)
entry_point(string $name)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...