Plugin in PHP – Klasse in OOP

Wie ich angekündigt habe, möchte ich euch meine Pluginklasse erneut vorstellen.
Diesmal aber in OOP.

Damit jedes Plugin verbindliche Klassen zur Verfügung stellt, erstellen wir ein Interface:

Datei IgPlugin.php

<?php
	interface IgPlugin
	{

		public function getName();
		public function setName($name);

		public function getVersion();
		public function setVersion();

		public function getAutor();
		public function setAutor();

		public function install();
		public function update($version);
		public function unistall();

		public function run();
	}
?>

Das Plugin ist dann folgendermaßen aufgebaut:

</pre>
<?php

	require_once("class/IgPlugin.php");
	
	class test implements IgPlugin
	{
		private $name = "TestPlugin";
	
		public function getName() { return $this->name; }
		public function setName($name){}
		
		public function getVersion(){}
		public function setVersion(){}
		
		public function getAutor(){}
		public function setAutor(){}
		
		public function install(){}
		public function update($version){}
		public function unistall(){}
		
		public function run(){ echo "Plugin l&auml;uft"; }
	}
	
?>

Die Datei gPlugin.php ist nun die Klasse für das Laden der Plugins:


<?php
	
	/**
	 * Klasse gPlugin
	 *
	 * Klasse zum Starten, Installieren, Updaten und Deinstallieren
	 * von Plugins
	 *
	 * @author Alexander Grüßung
	 * @version 2.0
	 */
	 
	class gPlugin
	{
		/**
		 * private field
		 */
		private $pluginName;
		
		/**
		 * private field
		 */
		private $pluginInstance;
	
		/**
		 * Konstruktor lädt Plugin in den Speicher
		 */
		public function __construct($pluginName)
		{
			$this->setPluginName($pluginName);
			$this->loadPlugin();
		}
		
		//Getter und Setter für PluginName
		private function setPluginName($pN) { $this->pluginName = $pN; }
		private function getPluginName() { return $this->pluginName; }
		
		//Getter und Setter für PluginInstance
		private function setPluginInstance($instance) { $this->pluginInstance = $instance; }
		private function getPluginInstance() { return $this->pluginInstance; }
	
		/**
		 * Funktion bindet Plugindatei ein und
		 * lädt Instanz in den Speicher
		 */
		private function loadPlugin()
		{
			if (file_exists($this->getPluginName().".php"))
			{
				require_once($this->getPluginName().".php");
				$name = $this->getPluginName();
				$this->setPluginInstance(new $name());
				
				if ( ($this->getPluginInstance() instanceof IgPlugin) == false)
				{
				 trigger_error("Interner Pluginfehler: Interface wird nicht implementiert", E_USER_ERROR);
				}
				
			}
			else
			{
				trigger_error("Plugin nicht gefunden", E_USER_ERROR);
			}
		}
		
		/**
		 * Plugin starten
		 */
		public function runPlugin()
		{
			//TODO Prüfen ob Plugin installiert ist
			$this->getPluginInstance()->run();
		}
	
	}
?>

Hier eine Beispieleinbindung:

<?php
	require_once("class/gPlugin.php");
	
	$p = new gPlugin("test");
	$p->runPlugin();
	
?>

 
Damit viel Spaß mit der Klasse!

gFramework: Fortschritte mit Bootstrap

Gestern schrieb ich, dass gFramework mit Bootstrap kompatibel sein soll.
Auch schrieb ich, dass der Nutzer im Editor Elemente, wie eine Hero- Unit, erzeugen kann.

Heute möchte ich bereits einen Screenshot liefern, dass das bereits funktioniert.

Erst der Quellcode im Editor:

editor

Der Button kann zwar auch via [button primary small]Newsecke[/button] erzeugt werden, allerdings kommt der IE damit nicht klar, da ich folgende Code erzeuge:

<button class="btn btn-primary btn-small">Newsecke</button>

Und der IE mag das Buttonelement, umschlossen von einem a-Tag, nicht.

Also habe ich einfach einen Link mit CKEditor erzeugt und diesen die Styleklassen „btn btn-primary btn-small“ zugewiesen.

Und hier das Ergebnis:

NeuStart

Sieht doch schick aus 😉

gFramework bekommt ein neues Gesicht

Viele von euch werden das Designframework Bootstrap von Twitter kennen.

Bootstrap ermöglicht es ein kurzer Zeit eine gut aussehende, funktionale Seite auf die Beine zu stellen.
Und obwohl Bootstrap ein recht allgemeines Framework ist, so kann man viel daraus machen,
wie in dieser Galerie zu sehen ist.

Bootstrap hat es mir richtig angetan, und so entschied ich mich die neue Seite gVisions Projects darauf aufzubauen.
Und auch gFramework wird auf Bootstrap umgebaut.
Die Klasse gNavigation ist bereits fertig und wird die alte gMenu ablösen.

Da es in der Grundausführung von Bootstrap möglich ist mit einer einzigen Änderung in der CSS Datei die ganze Seite zu beeinflussen, wird dies ein Grundelement der neuen Templateengine sein.
Ein kleines Menu, wo man die Seite neu einfärben kann.

Grundelemente, wie Hero-Unit und Sidebar können vom Nutzer dann individuell angepasst und eingefügt werden.
Dafür werden, Beispiel Hero-Unit, neue BBCodes eingeführt.

[hero]…[/hero]

Auch ein Imageslider ist dann ohne Probleme möglich.

Und das ist das Einzige, was ich noch machen muss. Dann wird das gFramework veröffentlicht als Beta.

gFramework bekommt ein neues Gesicht weiterlesen