Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

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
languagephp
themeRDark
    /**
     * @param int $max
     * @return array
     */
    public function index($max) {
      return $this
        ->getAppFactory>staticController(uiLib\libRequest\request\indexIndex::class)
        ->request($max)
      ;
    }

getAppLoose()

Codeblock
languagephp
themeRDark
titleAufbau
// 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
languagephp
themeRDark
{{{features 'component/foreign.foreign/method' serve}}}

...

Codeblock
languagephp
themeRDark
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
languagephp
themeRDark
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() {}
  }
}

...