Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Automatische Plugin/Mod Installation like WBB/SMF/XF



Uranjitsu
12.06.2018, 16:51
Grüßt euch,

hat jemand eine gute Anleitung oder ein Quick&Dirty, um zu erklären, wie man ein System so bearbeiten muss, dass eine Automatische Installation von Mods/Plugins möglich ist!?

Danke im Voraus.

LG

EVXN
12.06.2018, 17:12
Naja, erstmal muss eine einheitliche API da sein die die installation überhaupt ermöglichen kann.
einfaches PHP Plugin System — LinuxDoku's Blog (http://linux-doku.de/blog/einfaches-php-plugin-system)
Ist eine nette "Anleitung für dumme" - den Loader kann man dann via MySQL Abfrage steuern und so die Plug-ins auch enablen / disablen.

FLX
12.06.2018, 20:06
Das sieht interessant aus. Danke dir, werd mir das in einer ruhigen Minute mal zu Gemüte führen :-)

xmasta4000
13.06.2018, 09:01
// Deklariere das Interface (Methoden die die Klasse haben muss)
interface iTemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}

// Klasse die erweitert wird
class TemplateClassWithoutPlugin implements iTemplate
{
public function setVariable($name, $var)
{
echo 'ich mache garnix mit '.$name.' und '.$var;
return $this;
}

public function getHtml($template)
{
echo 'ich mache garnix mit '.$template;
}
}

// Implementiere Klasse die Methoden des Interfaces haben muss, das musst du irgendwie einbinden (dir fällt schon was ein, was weiß ich include oder so)
class Template extends TemplateClassWithoutPlugin implements iTemplate
{
private $vars = array();

public function setVariable($name, $var)
{
$this->vars[$name] = $var;
return $this; // Instanz auskacken sonst kein kuhles $class->bla()->blub(); möglich
}

public function getHtml($template)
{
foreach($this->vars as $name => $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
$pluginName = 'Template'; // hier auch entsprechend der eingebundenen Klasse anpassen (z.b. selber Klassenname wie Dateiname), vorher war der String hier TemplateClassWithoutPlugin

// Klasse dynamisch schneidig instanzieren
$plugin = new $pluginName();

// Methoden aufrufen
$returnValue = $plugin->setVariable('la', 'lu')->getHtml('lalulilula');

echo $returnValue;

Code ungetestet und zusammengeklaut. (inklusive coolen Moves)

Siehe:
PHP OOP (http://php.net/manual/de/language.oop5.php)
PHP Interfaces (http://php.net/manual/de/language.oop5.interfaces.php)

EDIT: nochmals geändert damit alles klarer wird

Uranjitsu
14.08.2018, 19:17
Vielen Dank für die Infos !