Winfried Herban: PHP oder Framework?

Hallo,

das ist mein erster Thread hier - deshalb eine kurze Erklärung zu mir:
ich bin seit ewigen Zeiten Java- Programmierer und hab mich nur am Rande mit PHP beschäftigt und vielleicht 10 Zeilen Code in PHP geschrieben.
Mit MySQL, HTML, CSS, JavaScript bzw. jQuery bin ich bestens vertraut.

Ich möchte ein Intranet erstellen und möchte dazu PHP verwenden, da Java- Hostings um einiges teurer sind und ich auch nicht so viel Funkionalität brauche (z.B. keine WebServices usw.).

Das Intranet sollte folgendes beinhalten:
1. Login
2. Kalender
3. Arbeitszeiterfassung
4. Latest News
5. Arbeitseiteilung (wann ist wer drann usw.)
6. upload von pdfs
7. email verschicken
8. Ausdrucken einzelner Seiten
Ich brauche also eine MySQL DB im Backend.

Meine Frage wäre jetzt folgende: Wie kann ich das in PHP angehen, kann ich für sowas Joomla verwenden oder würdet ihr das mit reinem HTML, CSS, jQuery machen und mit PHP für die Businesslogik?
Bin dankbar für jede Anregung.

lg
Generic1

  1. Moin!

    Ich möchte ein Intranet erstellen und möchte dazu PHP verwenden, da Java- Hostings um einiges teurer sind und ich auch nicht so viel Funkionalität brauche (z.B. keine WebServices usw.).

    Das Intranet sollte folgendes beinhalten:

    1. Login
    2. Kalender
    3. Arbeitszeiterfassung
    4. Latest News
    5. Arbeitseiteilung (wann ist wer drann usw.)
    6. upload von pdfs
    7. email verschicken
    8. Ausdrucken einzelner Seiten
      Ich brauche also eine MySQL DB im Backend.

    Meine Frage wäre jetzt folgende: Wie kann ich das in PHP angehen, kann ich für sowas Joomla verwenden oder würdet ihr das mit reinem HTML, CSS, jQuery machen und mit PHP für die Businesslogik?
    Bin dankbar für jede Anregung.

    Deine Frage ist merkwürdig. Sie entspricht etwa folgender Frage: "Wie kann ich das in Java angehen, kann ich für sowas Hibernate verwenden, oder würdet ihr das mit reinem HTML, CSS, jQuery machen und mit Tomcat für die Businesslogik?" (Aus Unwissenheit über Java wird es mir garantiert gelungen sein, die genannten Namen völlig an deren Funktion vorbei genutzt zu haben.)

    Du vergleichst Dinge als Alternative, die keine Alternativen, sondern sich ergänzende Komponenten sind.

    Wenn du derzeit noch keine Ahnung von PHP hast, hast du es sowieso schwerer. PHP ist zwar vom Aussehen her ähnlich wie Java, und in den grundlegenden Strukturen gleich, aber es ist in vielen entscheidenden Punkten komplett anders. Und das sind genau die Punkte, die man garantiert streift, wenn man Applikationsentwicklung betreibt.

    Darüber hinaus ist deine Anforderungsliste noch deutlich zu unkonkret.

    1. Login

    Was soll das Login bewirken? Wer verwaltet die User-DB? Gibts später SSO mit LDAP?

    1. Kalender

    Was heißt das? Anzeige aller Tage mit Wochentag eines Monats? Das wäre simpel. Das kann aber nicht gemeint sein. Statt eine eigenständige Lösung zu basteln, würde ich hier mal das Stichwort WebDAV/CalDAV in die Runde schmeißen. Damit erlaubt man einer größeren Menge von Kalender-Clients, mit diesem Kalender zu arbeiten - zusätzlich zur vermutlich notwendigen eigenen Oberfläche.

    CalDAV wäre dann übrigens wieder ein Webservice.

    1. Arbeitszeiterfassung

    Das ist definitiv nichts, was ein Content Management System leitet. Das allein ist schon eine komplette Web-Applikation.

    1. Latest News

    Nachrichten anzuzeigen bedeutet, zuvor Nachrichten eingegeben zu haben. CMS?

    1. Arbeitseiteilung (wann ist wer drann usw.)

    Das ist wieder so ein Mega-Klopper, den ich als eigenständige Applikation bewerten würde.

    1. upload von pdfs

    Und der Download?

    WebDAV again. Ist für das Behandeln von Dateien erfunden worden. Steckt in vielen Betriebssystemen als Unterstützung schon drin.

    1. email verschicken

    Sind E-Mail-Programme wie Thunderbird oder Outlook aus der Mode?

    1. Ausdrucken einzelner Seiten

    Browser haben Druckfunktionen. Sind aber zum geordneten Drucken eines vernünftigen, kontrollierbaren Layouts leider immer noch nicht wirklich geeignet. Wenn das reicht - Feature fertig. Wenn nicht, wird es wieder komplizierter. Und wer druckt dann? Der Server? Auf welchen Drucker?

    Vor allem aber ist die Frage zu klären, wer denn dieses Intranet benutzen soll, und wie schlimm es ist, wenn das jemand hackt, bzw. die Daten abhanden kommen. Denn andernfalls wäre zu überlegen, ob man nicht einfach einen existierenden Service für die generischen Komponenten mietet, und den Rest spezialisiert selbst erstellt. Das spart zumindest viel Zeit, und verringert das Risiko für Sicherheitsprobleme deutlich.

    - Sven Rautenberg

    1. Naja, beim lernen von PHP sehe ich keine Probleme - ich programmier nicht nur in Java sondern auch in Perl und Shellscript.
      Und das so manches Verhalten in PHP anders ist - das sollte nicht das Problem sein.

      Was ich mich halt gefragt hab, gibts Frameworks z.B. Joomla und hat das ein Template zur verfügung, welches ungefähr so aussieht:

      http://www.ovos.at/ovos/

      und welche Einschränkungen erkauf ich mir, wenn ich Joomla (das kenn ich ein bisschen) verwende?

      Besten Dank,
      lg
      Winfried

      1. Moin!

        und welche Einschränkungen erkauf ich mir, wenn ich Joomla (das kenn ich ein bisschen) verwende?

        Du wirst Lösungen erarbeiten, die nicht die optimale Lösung für dein Problem sind, sondern vom Einsatz von Joomla geprägt sind. Während das bei den Feldern "Latest News" und vermutlich auch "Kalender" kein Problem darstellt, dürfte es z.B. für "Zeiterfassung" schwieriger sein. Joomla wird vermutlich kein fertiges Modul für sowas anbieten, also bist du gezwungen, ohne sachliche Unterstützung von Joomla, aber dennoch gefangen im Konstrukt von Joomla, deine eigene Applikation dafür zu bauen.

        Mit jeder anderen Lösung besteht dasselbe Problem, nur eventuell weniger hinderlich.

        Ich kann nicht beurteilen, ob Joomla dich eher behindert oder unterstützt.

        - Sven Rautenberg

        1. Hallo,

          Du wirst Lösungen erarbeiten, die nicht die optimale Lösung für dein Problem sind, sondern vom Einsatz von Joomla geprägt sind. Während das bei den Feldern "Latest News" und vermutlich auch "Kalender" kein Problem darstellt, dürfte es z.B. für "Zeiterfassung" schwieriger sein.

          Zeiterfassung gibt es für Joomla - flog gerade durch meine Google-Suchergebnisseite :). Kann aber nicht beurteilen, obs was taugt.

          Stimme Dir aber voll zu - die Nutzung fertiger Joomla-Komponenten bedeutet im Zweifelsfall immer, gewisse Kompromisse eingehen zu müssen.

          Gruß,
          Jörg

      2. Hallo,
        Für die meisten der von Dir beschriebenen Komponenten müsste es für Joomla entsprechende Plugins geben. Insofern: Theoretisch müsste es möglich sein, Joomla für Deine Zwecke zu verwenden.

        Die Frage ist eher, ob Dir die Flexibilität von Joomla reicht. Primär ist Joomla nunmal eine CMS-/Blog-Software, also eigentlich nicht so ganz das, was Du suchst (was aber nicht zwingend heisst, dass man das nicht mit Joomla abbilden könnte).

        Meiner Erfahrung nach ist Joomla dann sinnvoll, wenn man nicht allzuviel Customizing braucht. Wenn es prinzipiell egal ist, WIE etwas gelöst ist, sondern nur, DASS etwas gelöst ist und funktioniert - dann bekommt man mit Joomla o.ä. recht schnell eine Installation mit großem Funktionsumfang. Ich habe für einen Verein einmal deren Webseite mit Joomla gebaut - dort gab es zu Beginn der Entwicklung nur sehr vage Ideen, was möglich sein soll ("Wir wollen selber Inhalte einstellen", "Leute sollen sich Sachen runterladen können", "Wir wollen eine Bilder-Gallerie", "Wir möchten einen Newsletter",...) - dafür war Joomla perfekt, weil der Kunde zufrieden war, mit dem, was Joomla (und ein paar zusätzliche Plugins) out of the box mitgebracht hat.

        Wenn sich aber bereits jetzt sehr konkrete Anforderungen ergeben, wie etwas sein muss, und welche Funktionen/Features vorhanden sein müssen, würde ich vielleicht doch eher eine Eigen-Entwicklung in Erwägung ziehen.

        Als PHP-Framework für eine Eigenentwicklung kann ich derzeit Symfony empfehlen. Es setzt konsequent das MVC-Pattern um und bringt viele wichtige Komponenten, die Du brauchen wirst (Persistenzschicht, Template-Engine, Session-Verwaltung, Routing,...) schon mit und es gibt bereits zahlreiche Plugins, die zusätzliche Funktionen bereit stellen.
        Man muss am Anfang ein bisschen Zeit investieren, um das Framework zu verstehen, wenn man ein bisschen drin ist, entwickelt es sich aber sehr angenehm, und insbesondere wenn Du Java gewöhnt bist, wirst Du dich dort schnell wohl fühlen.

        Hope that helps,

        Jörg

  2. hi,

    Das Intranet sollte folgendes beinhalten:

    1. Login
    2. Kalender
    3. Arbeitszeiterfassung
    4. Latest News
    5. Arbeitseiteilung (wann ist wer drann usw.)
    6. upload von pdfs
    7. email verschicken
    8. Ausdrucken einzelner Seiten
      Ich brauche also eine MySQL DB im Backend.

    Sehr schön. Da wird noch einiges hinzukommen.

    Meine Frage wäre jetzt folgende: Wie kann ich das in PHP angehen,

    Das ist die richtige Frage: Also NICHT 'PHP oder Framework' sondern wie du es angehst, mit PHP ein FW zu bauen.

    kann ich für sowas Joomla verwenden oder würdet ihr das mit reinem HTML, CSS, jQuery machen und mit PHP für die Businesslogik?

    Wie o.g. das wird sehr komplex und da ist auch viel serverseitig zu programmieren. Du wirst entweder ein FW von der Stange nehmen oder Dir selbst einen Kopf machen, wie Du

    • mit Benutzergruppen umgehst
    • die Herarchien aufbaust, damit die Kollegen damit gut arbeiten können
    • eine Suchfunktion machst
    • redundanten Code vermeidest
    • der Code übersichtlich, lesbar, skalierbar und wartungsfreundlich ist
    • auf Kundenwünsche zeitnah eingehen kannst
    • Schnittstellen zu anderen Systemen aufbaust
    • Kommunikation möglichst ohne Medienbrüche realisierst
    • die Arbeit im Team organisierst
    • u.v.a.m.

    Bin dankbar für jede Anregung.

    FW selber bauen. Insbesondere hinsichtlich Kundenwünsche ist dieser Weg meine Empfehlung, nicht zuletzt auch aufgrund meiner langjährigen Erfahrungen auf diesem Gebiet. Wenn das einmal so richtig produktiv ist, wirst Du keine Zeit mehr haben auf etwaige Upgrades für ein FW von der Stange warten zu müssen.

    Hotti

    1. Tach!

      Bin dankbar für jede Anregung.
      FW selber bauen. Insbesondere hinsichtlich Kundenwünsche ist dieser Weg meine Empfehlung, nicht zuletzt auch aufgrund meiner langjährigen Erfahrungen auf diesem Gebiet. Wenn das einmal so richtig produktiv ist, wirst Du keine Zeit mehr haben auf etwaige Upgrades für ein FW von der Stange warten zu müssen.

      Ein Framework (wie Symfony) bietet in erster Linie einen Rahmen an, der Infrastruktur für das Routing der Requests, die Persistierung von Daten und Hilfen bei der Ausgabe anbietet. Das "richtig produktive" ist die Geschäftslogik, und die ist in jedem Fall selbst zu schreiben, egal ob man zusätzlich noch ein eigenes Framework drumherum stricken muss oder sich innerhalb weniger Tage ausreichend in ein fertiges eingearbeitet hat. Upgrades eines Frameworks tragen auch eher weniger zur Geschäftslogik einer Anwendung bei.

      dedlfix.

      1. Tach,

        [] Das "richtig produktive" ist die Geschäftslogik,

        Produktiv ist eine Anwendung nach dem Deployment in einer produktiven Umgebung. Das heißt: Es wird damit gearbeitet.

        Hotti

        1. Tach!

          [] Das "richtig produktive" ist die Geschäftslogik,
          Produktiv ist eine Anwendung nach dem Deployment in einer produktiven Umgebung. Das heißt: Es wird damit gearbeitet.

          Ja, aber was hat dann das Framework für eine bremsende Wirkung, wenn Geschäftslogik fehlt? Und wo ist da der Unterschied zu einer Eigenentwicklung? Wenn ein Helper fehlt, dann kann und muss man ihn in beiden Vorgehensweisen hinzufügen.

          dedlfix.

          1. Tach!

            [] Das "richtig produktive" ist die Geschäftslogik,
            Produktiv ist eine Anwendung nach dem Deployment in einer produktiven Umgebung. Das heißt: Es wird damit gearbeitet.

            Ja, aber was hat dann das Framework für eine bremsende Wirkung,

            Das FW ist der Unterbau. Ein Intranet im produktiven Umfeld hat ACLs, tausende Dokumente und Anwendungen in dreistelliger Zahl. Es ist _das_ Werkzeug, mit dem die Kollegen arbeiten.

            Die Wahl eines geeigneten Unterbaus sollte wohl überlegt sein, denn es darf keinen Stillstand geben. Änderungen sind keine Basteleien sondern Changes, wo ein möglicher Produktionsausfall kalkluiert werden muss und ein mögliches Fallback, Changes können schiefgehen.

            Die Wahl des geeigneten Frameworks ist nicht die Wahl der Art zu Bremsen sondern das alles Entscheidende. Im produktiven Umfeld gibt es Zeitdruck, Termine, da muss jeder Handgriff sitzen.

            Und wo ist da der Unterschied zu einer Eigenentwicklung?

            Ggf. gibt es auch Changes am Unterbau zu machen, an der Basis, am Framework selbst. Möglicherweise gibt es auch mal was zu Testen auf einer produktiven Maschine, was anders nicht möglich ist. Das FW muss dafür die Voraussetzungen schaffen.

            Wenn ein Helper fehlt, dann kann und muss man ihn in beiden Vorgehensweisen hinzufügen.

            Im produktiven Umfeld ist das alles ein bischen komplizierter als eine Modelleisenbahn ;)

            Hotti

            1. Tach!

              Die Wahl eines geeigneten Unterbaus sollte wohl überlegt sein,

              Und genau deswegen plädiere ich dafür, etwas zu nehmen, das sich bereits bei vielen Anwendern bewährt hat und von ihnen getestet wurde, anstatt selbst etwas zusammenzustricken. Noch dazu, wenn man Anfänger ist (zumindest in der gewählten Programmiersprache).

              dedlfix.

              1. Tach!

                Die Wahl eines geeigneten Unterbaus sollte wohl überlegt sein,

                Und genau deswegen plädiere ich dafür, etwas zu nehmen, das sich bereits bei vielen Anwendern bewährt hat und von ihnen getestet wurde, anstatt selbst etwas zusammenzustricken. Noch dazu, wenn man Anfänger ist (zumindest in der gewählten Programmiersprache).

                Genau das ist auch meine Rede. Ich habe sehr komplexe Intranet's aufgebaut in einer Zeit, da gab es Frameworks, so wie sie heute in der OpenSource-Community bekannt sind, noch gar nicht, geschweige denn, Frameworks für den kommerziellen Bereich.

                Im Gegensatz zu Dir rede ich jedoch nicht von Basteleien oder von 'irgendwas zusammenstricken' sondern von Anwendungen, die sich über eine eigene Frameworkentwicklung im produktiven Einsatz bewährt haben.

                Schönes Wochenende,
                Horst

                1. Im Gegensatz zu Dir rede ich jedoch nicht von Basteleien oder von 'irgendwas zusammenstricken' sondern von Anwendungen, die sich über eine eigene Frameworkentwicklung im produktiven Einsatz bewährt haben.

                  Du hast dazu geraten statt eines erprobten Frameworks, ein eigenes Framework zu schreiben, wie soll sich das im produktiven Einsatz bewähren, bevor es zu diesem Einsatz kommt? Ich glaube, du hast in deiner Plädoyer den Faden verloren.

                  1. Im Gegensatz zu Dir rede ich jedoch nicht von Basteleien oder von 'irgendwas zusammenstricken' sondern von Anwendungen, die sich über eine eigene Frameworkentwicklung im produktiven Einsatz bewährt haben.

                    Du hast dazu geraten statt eines erprobten Frameworks, ein eigenes Framework zu schreiben, wie soll sich das im produktiven Einsatz bewähren, bevor es zu diesem Einsatz kommt? Ich glaube, du hast in deiner Plädoyer den Faden verloren.

                    Beim Aufbau sehr komplexer Intranetanwendungen, Dokumentenmanagement und all der hier genannten Dinge, die ins Intranet gehören, ist ein Framework entstanden als Eigenentwicklung, das sind die Erfahrungen, die ich gemacht habe, in einer Zeit, in der es (auch schon geschrieben) noch gar keine Frameworks gab. So schreibe ich von Dingen, die sich in der Praxis bewährt haben, von Dingen mit denen eine Firma lebt. Wohingegen in anderen Antworten nur von Mutmaßungen zu lesen ist, ob sich bestimmte Frameworks für solche Aufgaben eignen. Da lese ich nichts von Erfahrungen.

                    Hotti

                    1. Tach!

                      Beim Aufbau sehr komplexer Intranetanwendungen, Dokumentenmanagement und all der hier genannten Dinge, die ins Intranet gehören, ist ein Framework entstanden als Eigenentwicklung, das sind die Erfahrungen, die ich gemacht habe, in einer Zeit, in der es (auch schon geschrieben) noch gar keine Frameworks gab. So schreibe ich von Dingen, die sich in der Praxis bewährt haben, von Dingen mit denen eine Firma lebt. Wohingegen in anderen Antworten nur von Mutmaßungen zu lesen ist, ob sich bestimmte Frameworks für solche Aufgaben eignen. Da lese ich nichts von Erfahrungen.

                      Ach Hotti, denkst du, ich bin nur Theoretiker, und all die anderen Anwender und Ersteller der sehr beliebten Frameworks sind es auch? Dazu muss man auch noch die Projekte in anderen Sprachen betrachten, die dieselben Programmiermuster ebenfalls erfolgreich anwenden. Hingegen sehe ich bei dir von den Erfahrungen immer nur Gerede. Vom Framework ist im Gegensatz zu den anderen mit öffentlichem Code, nur gelegentlich mal ein Blog-Artikel mit Bruchstücken von Code zu sehen. Dabei fällt mir immmer wieder auf, dass Fachbegriffe nicht nur neu erfunden werden, sondern gern auch mal bestehende nicht mit der allgemein üblichen Bedeutung verwendet werden. All das macht es mir schwer, eine Glaubwürdigkeit in deinen Aussagen zu finden.

                      Selbst wenn du Erfahrungen mit einem eigenen Framework hast, und nun weißt, worauf es beim Schreiben ankommt, hat diese der PHP-Einsteiger nicht unbedingt auch. Ob ihm sein Java-Wissen dabei hilft, ist auch nicht gewiss. Das sind keine guten Voraussetzungen, um ein Projekt der genannten Größenordnung komplett bei Null anzufangen. Wenn man kein schlagkräftiges Team der Größenordnung Software-Company zur Verfügung hat, ist der angestrebten Umfang selbst mit Framework eine Aufgabe von nicht nur ein paar Wochen.

                      dedlfix.

  3. Hi there,

    Ich möchte ein Intranet erstellen und möchte dazu PHP verwenden, da Java- Hostings um einiges teurer sind und ich auch nicht so viel Funkionalität brauche (z.B. keine WebServices usw.).

    Wer solche Fragen stellt sollte generell die Hände davon lassen. Btw, was ist ein Java-Hosting?

    1. Wer solche Fragen stellt sollte generell die Hände davon lassen.

      Ups!

      Das ist völlig unangemessen. Warum sollte ein Java-Programmierer nicht auf PHP umsatteln, wenn es ihm für die Aufgabe als günstig erscheint. Ein "blutiger Anfänger" ist ER jedenfalls nicht.

      Btw, was ist ein Java-Hosting?

      Mit "Java-Hosting" ist offenbar ein Hosting gemeint, bei dem Java als Programmiersprache eingesetzt werden kann. Das bietet nicht jeder Hoster, jedenfalls nicht auf shared hosts. Es gibt viele Möglichkeiten Java zu verwenden, z.B. JSP ("Java Server Pages"), auch lässt sich Java durchaus als "CGI" verwenden (Beachte die Anführungsstriche).

      Mit ein wenig Spekulation kommt man auch darauf, dass "Intranet" hier einen Webauftritt für eine geschlossene Benutzergruppe meint.

      Zu den von Winfried geforderten Skills:

      Für vieles davon bieten sich einzelne Tools an, es gibt im Bereich der Groupware allerdings fertige Lösungen.

      1. Login

      Das hängt sehr vom Umfang hinsichtlich der Funktionen, aber auch der Zahl der Benutzer ab. Offenbar soll das Login den Zugriff auf die weiteren Bereiche eröffnen:

      1. Kalender

      und

      1. email verschicken

      Da würde ich die auch eine Groupware verweisen wollen. Die ist aber höchst unterschiedlich. Kolab kann z.B. sehr viel bedingt einen eigenen Server.  Es bringt u.a. RoundCube als Webmailer mit.

      1. Arbeitszeiterfassung

      Time-O-Meter, Kimai - such Dir was aus.

      1. Latest News

      Da wäre ein Blog eine Lösung.

      1. Arbeitseiteilung (wann ist wer drann usw.)

      Hm. Schichtplan? Gibts auch.

      1. upload von pdfs

      Zahlreiche Lösungen. Soll es ein document-managment-system werden? Oder sowas wie  ownCloud?

      1. Ausdrucken einzelner Seiten

      Das geht immer clientseitig. Die Seiten müssen also nur angeboten erden.

      Ich brauche also eine MySQL DB im Backend.

      Oder eine andere... und/oder LDAP...

      Ein Problem dürfte sein, diese Funktionen unter einem Login zusammen zu fassen, weshalb ich zunächst zu einer quelloffenen, gut dokumentierten Groupware greifen und eigene Erweiterungen (die auf die bestehenden Login-Lösungen zugreifen) dann hinzufügen würde.

      Ein weiteres Problem ist, dass sobald sowas "fertig" ist kommen die Sonderwünsche, dass diese und jene Funktion noch integriert werden muss. Aus der eigenen, kleinen Lösung, wird dann ein unüberschaubares Werk.

      Joomla

      Als CMS bietet Joomla ausgerechnet den geringsten und am wenigsten aufwendigen Teil der notwendigen Lösungen an. Das CMS für den Bereich "Latest News" erscheint mir als das kleinste Problem. Die Antwort ist "nein".

      Jörg Reinholz