...
Bei Methoden, die per lowerCamelCase
benannt sind, ergibt sich für den HTTP-Request eine Notation die sich an Pfaden orientiert. Hier: lower/camel/case
Wird dies nicht beachtet kommt es womöglich zu Fehlern bei der Verarbeitung von Rollen & Rechten.
...
staticController()
Mit dieser Methode stellen Sie eine indirekte Verbindung zu einer anderen Controller-Klasse her. Das Objekt wird automatisch instanziiert. Man hat anschließend Zugriff auf alle Methoden dieses Objekts.
Codeblock | ||||
---|---|---|---|---|
| ||||
/** * @param int $max * @return array */ public function index($max) { return $this ->getAppFactory>staticController(uiLib\libRequest\request\indexIndex::class) ->request($max) ; } |
getAppLoose()
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
// Controller der eine Methode zur Verfügung stellt namespace brandbox\component\foreign { use brandbox\component\http; class engine extends plugin\lib\engineAbstract { public function foreignMethod($max) { return ['max' => $max]; } } } // Controller der Rückgabewert der Methode erweitert namespace brandbox\component\overlay { use brandbox\component\http; class engine extends plugin\lib\engineAbstract { /** * @plugin component/foreign * @priority 100 */ public function foreignMethod($max) { return ['max' => $max, 'min' => 1]; } } } |
Aufruf per View
Codeblock | ||||
---|---|---|---|---|
| ||||
{{{features 'component/foreign.foreign/method' serve}}} |
...
Codeblock | ||||
---|---|---|---|---|
| ||||
namespace brandbox\component\example {
use brandbox\component\http;
use brandbox\component\foreign;
class engine extends plugin\lib\engineAbstract {
public function initiateLoose($max) {
$engine = $this->getAppLoose(foreign\engine::class);
$engine->setCallSendRequest(false);
$engine->setUseFullChain(true);
$engine->setParseHtml(false);
$result = $engine->foreignMethod($max);
// Gibt beide Werte aus:
// $result['serve']['max'];
// $result['serve']['min'];
}
}
}
|
Mit einer losen Kopplung erreichen wir zwei mögliche Ziele:
Hook
Ein Hook kann hilfreich sein, um Funktionen an einer Stelle im Plugin anzureichern, die nicht von diesem Plugin bereitgestellt werden sollen. Hooks werden über den Namen der Methode kenntlich gemacht.
Codeblock | ||||
---|---|---|---|---|
| ||||
namespace brandbox\component\example {
use brandbox\component\http;
use brandbox\component\foreign;
class engine extends plugin\lib\engineAbstract {
public function callHook() {
$engine = $this->getAppLoose(self::class);
$engine->setCallSendRequest(false);
$engine->setUseFullChain(true);
$engine->setParseHtml(false);
$engine->hookComponentExampleSelfMethod();
}
public function hookComponentExampleSelfMethod() {}
}
} |
...