Echte Komponentenentwicklung oder Integration von php-Scripten?

  • Ich würde gerne von den Experten Stimmen zum Pro und Contra einer "echten" Joomla-Integration von Erweiterungen hören.


    Folgende Situation: Ich arbeite an einer Special-Interest Online-Anwendung (ich rede mal beispielhaft von Fahrrädern), die die gezielte Suche nach Elementen (=Fahrrädern) erlaubt, die Anzeige aller vorhandenen technischen Daten, den Vergleich von Elementen etc. Dazu existiert eine separate (also nicht im Joomla-Schema) relationale Datenbank, die über die bisher vorhandenen ca. 10.000 Elemente weiter wachsen wird und zwar durch manuelle Ergänzungen wie auch durch automatisiertes Scraping.


    Bisher habe ich die Entwicklung der Funktionalität mit nativen PHP-Skripten entwickelt, aber das konzentriert sich auf die zentrale Logik der Special-Interest Anwendung an sich. Das Ganze soll aber früher oder später in Joomla laufen, denn die Infrastruktur von Joomla und die vielen Erweiterungen sind natürlich klasse und ich habe weder Lust, Zeit und Kenntnis, all das selbst zu entwickeln. Bis jetzt habe ich den Code so entwickelt, dass ich ihn mit der Sourcerer-Erweiterung in Artikel platzieren kann und dort läuft er auch prinzipiell gut. D.h. ich entwickle und teste außerhalb von Joomla Code, was sehr schnell und bequem ist und lade diesen mittels Sourcerer zur Ausführung in Artikeln.

    Mit der Zeit wird das aber komplexer und auch die gewünschte Integration mit Joomla-eigenen Elementen (z.B. Verknüpfung zu User-Feldern, Sprache etc.) lässt mich überlegen, ob nicht der "korrekte, offizielle" Weg der bessere wäre, d.h. die Entwicklung von Komponenten, die am Ende dasselbe machen wie meine bisherigen nativen PHP-Skripte.


    Allerdings ist die Entwicklung von MVC-Komponenten derart kompliziert (ich weiß, jetzt werden manche sagen das ist soooo einfach und wenn man das nicht versteht soll man's besser ganz bleiben lassen...), dass das ungeheuer viel Zeit kostet und erfordert, dass die gesamte Logik und Struktur von Joomla mehr oder weniger vollständig gelernt und verstanden wird. Davon bin ich momentan weit entfernt, habe aber ehrlich gesagt auch wenig Lust, meine Zeit mit dieser Infrastruktur anstatt mit meinen eigenen Daten und meiner Anwendungslogik zu verbringen.


    Daher meine Fragen:

    • Was spricht tatsächlich zwingend dafür, "echte" Joomla-Komponenten zu entwickeln?
    • Was sind die Erfahrungen mit der Entwicklung "echter" Joomla-Komponenten?
    • Was sind die (negativen) Erfahrungen mit der Integration von nativen PHP-Skripten mit Tools wie Sourcerer (anstatt der Entwicklung "echter" Joomla-Komponenten)?
    • Wo liegen also die Risiken und Chancen beider Ansätze?

    Sicherlich hat sich diese Fragestellung schon öfters ergeben und ich würde mich freuen, gute Argumente aus der Praxis dazu zu hören.

  • Ich würde da rein gar nichts programmieren, sondern das schnell und zuverlässig mit dem CCK Seblod umsetzen. Nun muss ich aber natürlich auf die wenigen sparsamen Sätze, die du zur Problemstellung geschrieben hast, verlassen. Eine eigene Datenbankstruktur kannst du problemlos mit dem CCK Seblod einbinden. Des Weiteren kannst du eigene Ein- und Ausgabemasken, Listen und Suchmasken/-ausgaben erstellen und diverses mehr.


    Vor einigen Jahren habe ich zu J!2.5 und mit Christiane und René zusammen ein Buch zur Komponentenentwicklung geschrieben. Da ist nix einfach, wenn du es richtig machen möchtest. Aber wie das Leben so manchmal spielt: ich habe seit dem keine einzige Zeile PHP mehr benötigt und fast alles vergessen. Aber ich habe den Umgang mit dem CCK Seblod gelernt und brauchte sei dem auch keine Programmierung mehr.


    Wenn es dich interessiert, folge meiner Signatur.



    Axel

  • Mir fallen spontan mal mindestens 3 gute Gründe für die native Entwicklung ein:

    1. Sourcerer und Co sind ein Sicherheitsrisiko. Wenn es einen Angreifer gelingt, einen Account mit „niedrigen“ Rechten (z.B. Manager) zu erhalten, kann er damit standardmäßig nicht den Webspace übernehmen weil er keinen Code ausführen kann. Sourcerer hebelt diese Rechteabstufung auf und führt somit die gesamt Rechteverwaltung ad absurdum.


    2. Das lose einbinden ist keine saubere Lösung. Ich persönlich will gerne auf meinen Code schauen und guten Gewissens sagen können „jop, das ist ne saubere Umsetzung, dafür muss ich mich nicht schämen“. Bei einer „drangeflantschten“ Lösung wäre ich nicht glücklich.


    3. Du entwickelst dich und deine Fähigkeiten weiter. Entwicklungshilfe-Pattern wie MVC oder andere „Must-Haves“ der modernen Entwicklung wie Datenbank-Abstraktion, Namespaes, Autoloading und co bilden zwar beim Einstieg in die Entwicklung erstmal eine steile Lernkurve, aber letztlich helfen Sie Dir, dein Wissen zu erweitern und besser zu programmieren.

  • Ich bin ja diejenige mit der Komponentenentwicklung und und finde eigene Komponente viel leichter und schneller als Seblod. Genau mit den Argumenten, die auch SniperSister bringt.
    Man fängt ja nicht direkt bei 0 an - die Komponenten sind so standardisiert dass du praktisch eine Joomla Komponente kopieren und anpassen kannst.


    Ich denke dass du für SEBLOD genau so lange brauchst wie für eine eigene Komponente.


    .

  • Ich denke dass du für SEBLOD genau so lange brauchst wie für eine eigene Komponente.


    .

    Die Einarbeitung ist natürlich auch nicht so ganz ohne. Insbesondere bei dem Vorhaben braucht's da auch etwas länger.

    Am Ende kommt letztlich auch eine eigene Komponente dabei raus, nur halt ohne Programmierung.

    Wenn du Seblod selber einigermaßen beherrschst, dann kannst du umfangreiche Komponenten locker in einem Drittel und noch weniger der Zeit herstellen.


    Nichts desto Trotz gibt es natürlich auch bei Seblod Grenzen. Man muss, wenn dann, sehr genau abwägen.



    Axel

  • Danke Euch für die Stellungnahmen, die in etwa sind wie ich es erwartet habe. Klar ist die "systemnahe" Lösung prinzipiell besser, sicherer und erlauben direkte Verknüpfung zu anderen Funktionalitäten. Ist halt schwierig zu entscheiden auf welches Pferd man setzt, wenn man dann doch vermutlich einige hundert Stunden investieren muss. Werde zunächst mal "weiterforschen", aber vielen Dank für Eure Stellungnahmen.