Ich habe vor ein kleines Addon System zu coden und habe es auch bereits.
Jedoch ist die Variante die ich nutze mir persöhnlich nicht am Besten, jedoch fällt mir
keine bessere Variante ein.
Ich nutze einen Autoloader, der lädt die Klasse und erstellt das Objekt für die Hauptklasse der Addons, wo alle Addons
geladen werden sollen.
Die sieht so aus:
PHP
<?php
namespace system\classes\addon;
class Addon {
public function __construct() {
$handle = opendir(HOME . DS . "system" . DS . "addons");
while($addon = readdir($handle)) {
if($addon != "." && $addon != "..") {
$parts = explode(".", $addon);
$name = strtolower($parts[1]);
$class = ucfirst($name);
require_once(HOME . DS . "system" . DS . "addons" . DS . "{$addon}");
$addon = "\system\addons\\{$name}\\{$class}";
new $addon();
}
}
closedir($handle);
}
}
Alles anzeigen
Im Verzeichnis system/addons befinden sich dann die Addons.
Ein Beispiel Addon:
PHP
<?php
namespace system\addons\helloworld;
use \system\classes\app\App as App;
// Write only initial letter uppercase
class Helloworld {
private $App, $enabled = true;
public function __construct() {
if($this->enabled) {
$this->App = new App();
$pagename = $this->App->Config(ROW_CONFIG_SITENAME);
if(!defined("AJAX")) {
$this->log("<p>[HelloWorld] Addon has been loaded.</p>");
$this->log("<p>[HelloWorld] Page name: {$pagename}</p>");
$this->log("<p>[HelloWorld] To disable this addon change the variable enabled to false (0).</p>");
}
}
}
public function log($text) {
print($text);
}
}
Alles anzeigen
Die HelloWorld Klasse (also das Addon) ist ja schön und gut, nur wie könnte ich die Hauptklasse worin die Addons geladen werden schöner gestalten?