diff --git a/reference/yaf/yaf-loader.xml b/reference/yaf/yaf-loader.xml new file mode 100644 index 000000000..473d3d3a7 --- /dev/null +++ b/reference/yaf/yaf-loader.xml @@ -0,0 +1,310 @@ + + + + + + + Die Klasse Yaf_Loader + Yaf_Loader + + + + +
+ &reftitle.intro; + + Yaf_Loader stellt eine umfassende Autoloading-Lösung + für Yaf bereit. + + + Beim ersten Abruf einer Instanz von Yaf_Application + erzeugt Yaf_Loader ein Singleton und registriert sich + selbst bei spl_autoload. Eine Instanz wird mittels + Yaf_Loader::getInstance abgerufen. + + + Yaf_Loader versucht, eine Klasse nur einmal zu laden; + schlägt dies fehl, hängt das Verhalten von yaf.use_spl_autoload ab: Ist diese + Konfiguration On, gibt Yaf_Loader::autoload + &false; zurück und gibt damit anderen Autoload-Funktionen eine Chance. Ist sie + Off (Standard), gibt Yaf_Loader::autoload + &true; zurück, und, was wichtiger ist, es wird eine sehr nützliche Warnung + ausgelöst (sehr nützlich, um herauszufinden, warum eine Klasse nicht geladen + werden konnte). + + + yaf.use_spl_autoload sollte Off bleiben, es sei denn, eine Bibliothek + verfügt über einen eigenen Autoload-Mechanismus, der nicht umgeschrieben + werden kann. + + + + + Standardmäßig nimmt Yaf_Loader an, dass alle + Bibliotheken (Skripte mit Klassendefinitionen) im globalen + Bibliotheksverzeichnis liegen, das in der php.ini (yaf.library) + definiert ist. + + + + Soll Yaf_Loader bestimmte Klassen (Bibliotheken) im + lokalen Klassenverzeichnis + suchen (das in der application.ini definiert ist und standardmäßig + application.directory . "/library" lautet), + so muss das Klassenpräfix mittels + Yaf_Loader::registerLocalNameSpace registriert werden. + + + + Sehen wir uns einige Beispiele an (es wird angenommen, dass APPLICATION_PATH dem + application.directory entspricht): + + Konfigurationsbeispiel + + + + + + Angenommen, der folgende lokale Namensraum ist registriert: + + localnamespace registrieren + +registerLocalNameSpace(array("Foo", "Bar")); + } +} +?> +]]> + + + + Dann die Autoload-Beispiele: + + Beispiel zum Laden einer Klasse + + + // APPLICATION_PATH/library/Foo/Bar/Test.php + +class GLO_Name => + // /global_dir/Glo/Name.php + +class BarNon_Test + // /global_dir/Barnon/Test.php +]]> + + + + + Beispiel zum Laden einer Klasse mit Namensraum + + + // APPLICATION_PATH/library/Foo/Bar/Dummy.php + +class \FooBar\Bar\Dummy => + // /global_dir/FooBar/Bar/Dummy.php +]]> + + + + + + Möglicherweise ist aufgefallen, dass alle Ordner mit einem Großbuchstaben + beginnen; sie können in Kleinbuchstaben umgewandelt werden, indem in der php.ini + yaf.lowcase_path = On gesetzt wird. + + + + Yaf_Loader ist auch dafür ausgelegt, die MVC-Klassen zu + laden; die Regel lautet: + + Beispiel zum Laden von MVC-Klassen + + +// APPLICATION_PATH/controllers/ + +Model Classes => +// APPLICATION_PATH/models/ + +Plugin Classes => +// APPLICATION_PATH/plugins/ +]]> + + + + Yaf erkennt das Suffix einer Klasse (dies ist der Standard; es kann über die + Konfiguration yaf.name_suffix auch auf das Präfix + umgestellt werden), um zu entscheiden, ob es sich um eine MVC-Klasse handelt: + + Unterscheidung von MVC-Klassen + + + // ***Controller + +Model Classes => + // ***Model + +Plugin Classes => + // ***Plugin +]]> + + + + einige Beispiele: + + Beispiel zum Laden von MVC-Klassen + + + // APPLICATION_PATH/models/Data.php + +class DummyPlugin => + // APPLICATION_PATH/plugins/Dummy.php + +class A_B_TestModel => + // APPLICATION_PATH/models/A/B/Test.php +]]> + + + + + + Seit Version 2.1.18 unterstützt Yaf das Autoloading von Controllern auf der + Seite des Benutzerskripts (das heißt, das durch das PHP-Skript des Benutzers + ausgelöste Autoloading, z. B. der Zugriff auf eine statische Eigenschaft eines + Controllers in einem Bootstrap oder in Plugins), aber der Autoloader versucht + nur, das Skript der Controller-Klasse im Ordner des Standardmoduls zu finden, + der "APPLICATION_PATH/controllers/" lautet. + + + Außerdem wird das Verzeichnis durch yaf.lowcase_path beeinflusst. + +
+ + +
+ &reftitle.classsynopsis; + + + + Yaf_Loader + + + + + Yaf_Loader + + + + &Properties; + + protected + _local_ns + + + protected + _library + + + protected + _global_library + + + static + _instance + + + + &Methods; + + + + + +
+ + + +
+ &reftitle.properties; + + + _local_ns + + + + + + _library + + + Standardmäßig lautet dieser Wert application.directory . "/library"; + er kann entweder in der application.ini (application.library) oder durch einen Aufruf von + Yaf_Loader::setLibraryPath geändert werden. + + + + + _global_library + + + + + + _instance + + + + + +
+ + + +
+ + + &reference.yaf.entities.yaf-loader; + +
+ + diff --git a/reference/yaf/yaf_application/construct.xml b/reference/yaf/yaf_application/construct.xml new file mode 100644 index 000000000..a2e7f89e0 --- /dev/null +++ b/reference/yaf/yaf_application/construct.xml @@ -0,0 +1,176 @@ + + + + + + + Yaf_Application::__construct + Konstruktor von Yaf_Application + + + + &reftitle.description; + + public Yaf_Application::__construct + mixedconfig + stringenviron + + + Erzeugt eine Instanz von Yaf_Application. + + + + + + + + &reftitle.parameters; + + + config + + + Ein Pfad zu einer ini-Konfigurationsdatei oder ein Konfigurationsarray. + + + Handelt es sich um eine ini-Konfigurationsdatei, so sollte es einen + Abschnitt geben, der so benannt ist, wie er durch + yaf.environ definiert ist und der + standardmäßig "product" lautet. + + + Wird eine ini-Konfigurationsdatei als Konfigurationscontainer der + Anwendung verwendet, sollte yaf.cache_config aktiviert werden, + um die Leistung zu verbessern. + + + + + Und die Liste der Konfigurationseinträge (samt ihren Standardwerten): + + Beispiel einer ini-Konfigurationsdatei + + + + + + + + + environ + + + Welcher Abschnitt als endgültige Konfiguration geladen wird. + + + + + + + + &reftitle.returnvalues; + + + + + + + &reftitle.examples; + + Beispiel für <function>Yaf_Application::__construct</function> + +bootstrap()->run(); +?> +]]> + + &example.outputs.similar; + + + + + + Beispiel für <function>Yaf_Application::__construct</function> + + array( + "directory" => realpath(dirname(__FILE__)) . "/application", + ), +); + +/** Yaf_Application */ +$application = new Yaf_Application($config); +$application->bootstrap()->run(); +?> +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_Config_Ini + + + + + + diff --git a/reference/yaf/yaf_route_rewrite/construct.xml b/reference/yaf/yaf_route_rewrite/construct.xml new file mode 100644 index 000000000..d633d6cad --- /dev/null +++ b/reference/yaf/yaf_route_rewrite/construct.xml @@ -0,0 +1,241 @@ + + + + + + + Yaf_Route_Rewrite::__construct + Konstruktor von Yaf_Route_Rewrite + + + + &reftitle.description; + + public Yaf_Route_Rewrite::__construct + stringmatch + arrayroute + arrayverify + + + + + + + + &reftitle.parameters; + + + match + + + Ein Muster, das zum Abgleich mit einer Anfrage-URI verwendet wird; wenn es + nicht passt, gibt Yaf_Route_Rewrite + &false; zurück. + + + Es kann der Stil :name verwendet werden, um die abgeglichenen Segmente zu + benennen, und * verwendet werden, um die restlichen URL-Segmente abzugleichen. + + + + + route + + + Wenn das Muster match auf die Anfrage-URI passt, verwendet + Yaf_Route_Rewrite dies, um zu entscheiden, welches + Modul/welcher Controller/welche Aktion das Ziel ist. + + + Jeder Eintrag module/controller/action in diesem Array ist optional; wird + kein bestimmter Wert zugewiesen, wird zur Standardwahl geroutet. + + + + + verify + + + + + + + + + + + &reftitle.returnvalues; + + + + + + + &reftitle.examples; + + Beispiel für <classname>Yaf_Route_Rewrite</classname> + +getRouter()->addRoute("name", + new Yaf_Route_Rewrite( + "/product/:name/:id/*", // gleicht Anfrage-URIs ab, die mit "/product" beginnen + array( + 'controller' => "product", // routet zum Controller product, + ), + ) + ); +?> +]]> + + &example.outputs.similar; + + "product", + "module" => "index", //(default) + "action" => "index", //(default) +) + +/** + * and request parameters: + */ +array( + "name" => "foo", + "id" => 22, + "foo" => bar +) +]]> + + + + Beispiel für <classname>Yaf_Route_Rewrite</classname> + + array( + "type" => "rewrite", // Route Yaf_Route_Rewrite + "match" => "/user-list/:id", // gleicht nur /user/list/?/ ab + "route" => array( + 'controller' => "user", // routet zum Controller user, + 'action' => "list", // routet zur Aktion list + ), + ), + ); + Yaf_Dispatcher::getInstance()->getRouter()->addConfig( + new Yaf_Config_Simple($config)); +?> +]]> + + &example.outputs.similar; + + "user", + "action" => "list", + "module" => "index", //(default) +) + +/** + * and request parameters: + */ +array( + "id" => 22, +) +]]> + + + + Beispiel für <classname>Yaf_Route_Rewrite</classname> (ab Version 2.3.0) + + array( + "type" => "rewrite", + "match" => "/user-list/:a/:id", // gleicht nur /user-list/* ab + "route" => array( + 'controller' => "user", // routet zum Controller user, + 'action' => ":a", // routet zur Aktion :a + ), + ), + ); + Yaf_Dispatcher::getInstance()->getRouter()->addConfig( + new Yaf_Config_Simple($config)); +?> +]]> + + &example.outputs.similar; + + "user", + "action" => "list", + "module" => "index", //(default) +) + +/** + * and request parameters: + */ +array( + "id" => 22, +) +]]> + + + + + + &reftitle.seealso; + + Yaf_Router::addRoute + Yaf_Router::addConfig + Yaf_Route_Static + Yaf_Route_Supervar + Yaf_Route_Simple + Yaf_Route_Regex + Yaf_Route_Map + + + + + + diff --git a/reference/yaf/yaf_view_simple/assignref.xml b/reference/yaf/yaf_view_simple/assignref.xml new file mode 100644 index 000000000..0f3880a20 --- /dev/null +++ b/reference/yaf/yaf_view_simple/assignref.xml @@ -0,0 +1,132 @@ + + + + + + + Yaf_View_Simple::assignRef + Der Zweck von assignRef + + + + &reftitle.description; + + public boolYaf_View_Simple::assignRef + stringname + mixedvalue + + + Anders als Yaf_View_Simple::assign weist diese Methode + der Engine einen Referenzwert zu. + + + + + &reftitle.parameters; + + + name + + + Ein Zeichenkettenname, der für den Zugriff auf den Wert im Template + verwendet wird. + + + + + value + + + Wert vom Typ mixed + + + + + + + + &reftitle.returnvalues; + + + + + + + &reftitle.examples; + + Beispiel für <function>Yaf_View_Simple::assignRef</function> + +getView()->assign("foo", $value); + + /* bitte beachten, dass es vor Yaf 2.1.4 einen Fehler gab, + * durch den die folgende Ausgabe "bar" lautet; + */ + $dummy = $this->getView()->render("index/index.phtml"); + echo $value; + + // verhindert das automatische Rendern + Yaf_Dispatcher::getInstance()->autoRender(FALSE); + } +} +?> +]]> + + + + Beispiel für ein Template + + + + <?php echo $foo; $foo = "changed"; ?> + + + + +]]> + + &example.outputs.similar; + + + + + + + + &reftitle.seealso; + + Yaf_View_Simple::assign + Yaf_View_Simple::__set + + + + + +