php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.03.2010, 15:02  
Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Puccini befindet sich auf einem aufstrebenden Ast
Standard Ideen/Ansätze für Plugin-System und Plugin-Kommunikation

Hi,

ich will mir ein kleines eigenes CMS/Framework aufbauen.
Dabei soll es möglich sein den Core mittels eigener PHP-Scripte (Plugins) zu erweitern.
Dabei hab ich mir so gedacht, das diese über eine autoload-Funktion dynamisch eingebunden werden, wenn sie aktiv sind.
Über ein backend können diese aktiv/deaktiviert oder de-/installiert werden.

jetzt stellt sich mir die frage, wie ich es gestallte, das die Plugins in einer gewissen reihenfolge abgearbeitet werde...

Ich würde das gern über Abhängikeiten regeln. das zb plugin 2 erst nach Plugin 1 startet, da es von diesem daten benötigt.

Nur wie mach ich das?


Hat da wer ne ahnung?
Danke euch für die hilfe
Puccini ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.03.2010, 15:35  
Erfahrener Benutzer
 
Benutzerbild von boolean
 
Registriert seit: 06.10.2008
Beiträge: 257
PHP-Kenntnisse:
Fortgeschritten
boolean ist zur Zeit noch ein unbeschriebenes Blatt
boolean eine Nachricht über Skype™ schicken
Standard

Die Idee hatten schon viele und eigentlich sind alle kläglich daran gescheitert (mal ausgenommen Facebook). Ein Pluginsystem schreiben ist eine Sache für sich. Natürlich müsstest du die Möglichkeit haben in den bestehenden Programmcode einzugreifen und Dinge einzeln zu manipulieren.

Die Abfolge der einzelnen Packages kannst du meiner Meinung nach nur richtig über die Datenbank verwalten. Welche Datenbank du dafür verwendest ist deine Sache.

Hier mal ein kleiner Ideenansatz auf Grund dieser Datenbank:
Code:
DROP TABLE IF EXISTS `plugins`;
CREATE TABLE IF NOT EXISTS `plugins` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `series` int(11) NOT NULL,
  `flow` int(11) NOT NULL,
  `name` varchar(50) NOT NULL,
  `folder` varchar(25) NOT NULL,
  `status` enum('activated','inactive') NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `series_flow` (`series`,`flow`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Nehmen wir an wir haben folgende Plugins:
Twitter
Tweets_Facebook

- Twitter schreibt einträge auf Twitter.
- Tweets_Facebook kümmert sich daraum, dass Einträge die auf Twitter geschrieben werden auch auf Facebook erscheinen.

Jetzt soll praktischer Weise das ganze mit Abhängigkeiten laufen. Tweets_Facebook darf nicht initialisiert sein bevor es Twitter gibt. Das bedeutet man Teilt beiden Komponenten die Series 1 zu (für Package 1). Und als Ablauf würde man 1 sowie 2 deklarieren.

So:

Code:
INSERT INTO `plugins` (`id`, `series`, `flow`, `name`, `folder`, `status`, `created`) VALUES
  ('1', '1', '1', 'Twitter', 'twitter', 'activated', '2010-03-08 15:34:01'),
  ('2', '1', '2', 'Tweets Facebook', 'tweets_facebook', 'activated', '2010-03-08 15:34:19');
Das ist nur ein kleiner Ansatz - ich hätte noch bessere aber vielleicht hilft dir das auch weiter.
__________________
true||false - www.trueorfalse.de - Rund um Software Entwicklung
boolean ist offline   Mit Zitat antworten
Alt 08.03.2010, 16:09  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 379
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von boolean Beitrag anzeigen
Die Idee hatten schon viele und eigentlich sind alle kläglich daran gescheitert (mal ausgenommen Facebook).
Du kramst ja heute ziemlich tief in der Weisheiten-Kiste....
-> WBBLite / WBB
-> PunBB
Um nur mal ein paar Beispiele für Plugin-Systeme zu nennen.

Oft behilft man sich mit fest definierten Hooks, an denen sich die Plugins registrieren.
Abhängigkeitern kann dann eben ein Plugin-Manager auflösen, der auch darüber wacht, dass keine Loops entstehen können (was man ja bei der Programmierung schon beachten muss).
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 08.03.2010, 16:14  
Benutzer
 
Registriert seit: 03.02.2010
Beiträge: 51
PHP-Kenntnisse:
Fortgeschritten
Puccini befindet sich auf einem aufstrebenden Ast
Standard

das dacht ich mir auch mit den hooks.

und event. auch mit Events oder Signals, so das eine funktion ein gewisses signal aussendet wenn sie start, dann wenn sie fertig ist etc...
und bei jedem senden überprüft der pluginmanager ob ein plugin auf dieses signal reagieren will.

wie würde das mit den hooks funktionieren?
hab das bei drupal schon gesehen, aber net geblickt.
eine kleine beschreibung mit ablauf wäre sehr hilfreich :>
Puccini ist offline   Mit Zitat antworten
Alt 08.03.2010, 16:21  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 379
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Extrem vereinfacht:
PHP-Code:
function abc($a$b$c) {
     
execute_hook('abcStartHook');
     
// ...
     
execute_hook('abcEndHook');

Je nach Anwendungsfall übergibst du dem Plugin dann z.B. noch $a, $b und $c, wenn diese z.B. modifiziert werden sollen.

Sorry, ist mir einfach grad zu lang um das alles zu erklären, such dich hier durch's Forum und schau dir diverse Plugin-Systeme an, Beispiele habe ich ja bereits genannt.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 08.03.2010, 16:26  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 923
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

Im einfachsten Fall:

Tabelle Plugins:
Code:
id: 1
hook: pageload_start
code:  echo "doooooooo something";
________________________________
id: 2
hook: usercreate_save
code: $this->userfoo = bar;
usw

Und in deinem Code hast du dann zB eine Funktion call_plugin("hookname"); die die entsprechenden COdes ausführt.
ragtek ist offline   Mit Zitat antworten
Alt 08.03.2010, 17:16  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Wie oft hatten wir das im Software-Design-Forum schon diskutiert? 5x, 10x? Bitte mal die Foren-Suche nutzen!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist gerade online   Mit Zitat antworten
Alt 09.03.2010, 11:33  
Erfahrener Benutzer
 
Benutzerbild von boolean
 
Registriert seit: 06.10.2008
Beiträge: 257
PHP-Kenntnisse:
Fortgeschritten
boolean ist zur Zeit noch ein unbeschriebenes Blatt
boolean eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von G.Schuster Beitrag anzeigen
Du kramst ja heute ziemlich tief in der Weisheiten-Kiste....
-> WBBLite / WBB
-> PunBB
Um nur mal ein paar Beispiele für Plugin-Systeme zu nennen.

Oft behilft man sich mit fest definierten Hooks, an denen sich die Plugins registrieren.
Abhängigkeitern kann dann eben ein Plugin-Manager auflösen, der auch darüber wacht, dass keine Loops entstehen können (was man ja bei der Programmierung schon beachten muss).
Wenn du das Sauber nennst dann will ich nicht deinen Code sehen.

Hier ein paar Resultate:
http://www.php.de/software-design/62...-struktur.html (Integration eines Pluginsystems in einer HMVC Struktur)
http://www.php.de/software-design/60...rd-system.html (Plugin-Schnittstelle für Board-System)
__________________
true||false - www.trueorfalse.de - Rund um Software Entwicklung
boolean ist offline   Mit Zitat antworten
Alt 09.03.2010, 11:42  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 379
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab ich das irgendwo sauber genannt?
Ich finde nur derartige Pauschalaussagen (alle dran gescheitert außer Facebook) mehr als daneben.

Im Übrigen - wie schließt du aus spontanen Gedankengängen auf die von mir produzierte Code-Qualität?
Es gibt neben true und false manchmal auch noch ein vielleicht
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Scriptangebot IV Content Management System Master IV Scriptbörse 0 06.10.2009 15:09
Plugin system Marti95. PHP Tipps 2009 15 01.10.2009 18:38
Plugin Controller Cout PHP-Fortgeschrittene 5 24.06.2009 23:02
Fehler beim kompilieren von php 5.2.9 malio Server, Hosting und Workstations 11 05.06.2009 18:40
Kurze Einführung in Firefox Search Plugin Programmierung PTC Tutorials 5 10.02.2009 01:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php plugin system, visio, http://www.php.de/php-fortgeschrittene/65480-ideen-ansaetze-fuer-plugin-system-und-plugin-kommunikation.html, plugin system programmieren, plugin systeme, plugin system php, php plugin system schreiben, php plugin system programmieren, php ideen, eigenes php facebook system, eigenes cms plugins, write website plugin communication, plugin system programmieren php -joomla -typo3, php plugins hooks, pluginsystem php, php plugin engine, php plugin systems, writing a plugin für wbblite, bachus naur form, plugin system mit php

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum