Technikwürze

Wer suchet, der findet!

Reguläre Folge, Download (MP3, 26 MB)

Transkript der Folge

  1. David

    Herzlich willkommen zur Technikwürze Nummer siebenundsiebzig. Irgendwie ist es immer der gleiche Spruch. Egal. Heute ist Montag, der 18. Juli. Mein Name ist David Maciejewski und mit mir dabei aus in der Sendung, aus Magdeburg direkt zugeschaltet, Christian Voigts. Hallo Christian.

  2. Christian

    Hallo David.

  3. David

    Wir unterhalten uns heute über das PHP Framework CakePHP und, der Christian ist dazu da, um uns zu erklären, was das ist. Ist nicht nur was für Profis, sondern auch für Anfänger. Schauen wir mal. Herzlich willkommen.

    So Christian, erst mal kurz zu dir. Du kommst aus Magdeburg und bist selbstständiger Webdesigner. Ist richtig, ne?

  4. Christian

    So sieht's aus. Genau.

  5. David

    Was machst du denn bei deiner Selbstständigkeit?

  6. Christian

    Eigentlich das Standardgedöns nenne ich's jetzt mal, das, was denke ich, auch viele von uns machen, eben den ganzen HTML, CSS-Verwurstungskram,, was mir nicht ei, ja, was ich eigentlich dann noch mache, sind eben Anwendungen im Bereich PHP mit MySQL. Eben eigentlich so, was den Standard betrifft. Also ich bezeichne mich da eher a-als Allrounder, der eben von allem mehr oder weniger gutes Wissen hat, aber halt in, in nichts so der ganz komplette Profi.

  7. David

    Sagen wir so. Also du kannst deinen Kunden zumindest Content-Management-Systeme verpassen, wenn sie danach schreien.

  8. Christian

    Exakt, exakt. Also ich bin da auch relativ wissbegierig, befasse mich halt auch gerne mit neuen Thematiken und in dem Zusammenhang bin ich damals dann eben auch auf CakePHP gestoßen.

  9. David

    Mhm. Ganz kurz noch mal zu deiner Webseite. Die verlinken wir später noch auf Technikwürze.de. Dort auch sämtliche Links, die wir irgendwie in irgendeiner Form in dieser Sendung dann besprechen. Christian, CakePHP ist unser Thema. Das Ganze ist ein Framework. Vielleicht sollten wir für diejenigen erst mal erklären, was grundsätzlich ein Framework ist oder was man damit machen kann.

  10. Christian

    Mhm. Also Frameworks kennen, denke ich, schon relativ viele von uns. Allerdings ist das immer so ein Begriff, der weit gedehnt werden kann, zumindest aus meiner Sicht. Für mich ist ein Framework ein, ein Rundumpaket für eine gewisse Programmiersprache, die dem Entwickler einfach helfen soll, Dinge einfacher und meist auch schneller, ja, zustande zu bekommen.

    Also einfach die Entwicklung einer gewissen Applikation, sei es in JavaScript, in Ruby oder Python oder eben in PHP, ja, schneller voranzubringen beziehungsweise eben mit mehr Funktionalität zu versehen. Und das Ganze auch noch einfacher.

  11. David

    Ja, Frameworks, sind eigentlich dafür da, damit man früher ins Woche, Wochenende gehen kann. So bezeichne ich das. Dahinter verbirgt sich zum Teil ein bisschen Faulheit, dass man eben nicht alles jedes Mal von neuen schreiben oder programmieren muss, sondern, auch ein gewisser Grad an Professionalität, dass man sich seine eigenen Klassenbibliotheken oder was auch immer, entweder selbst schreibt und die jedes Mal für jedes Projekt neu mit rein nimmt.

    Oder man greift eben auf diverse Frameworks zurück. Und, unser Thema heute ist eben CakePHP. Inwiefern ist CakePHP als Framework denn für PHP-Programmierer interessant?

  12. Christian

    Also CakePHP an sich, ist eben auch wieder so ein, so ein Rahmen, ja, wie soll man's nennen? Auch wieder eben ein Framework, was gewisse Dinge mitbringt, die der PHP-Programmierer von heute eben eigentlich fast täglich braucht.

    Das, geht über, ja, suchmaschinenfreundliche URLs, die direkt mit dabei sind, Unterstützung von verschiedenen, Datenbanken, Unterstützung von verschiedenen PHP-Funktionen, und eben, was für mich zumindest auch ganz wichtig ist, ist die klare Strukturierung in eben Model, View und Controller. Da kommen wir, denk ich, später noch zu, was es eben auch gerade in Entwicklungen, die mit mehreren Leuten arbeiten, sehr stark vereinfacht.

    Denn bisher war, kenne ich das Problem, wenn man mal ein größeres Projekt in Anlauf nehmen will mit mehreren Benutzern, hat man immer das Problem, dass jeder so seine eigene Programmierweise hat in PHP.

    Also es war für mich immer ein tierisches Problem, weil der eine, der geht so an die Problematik ran, der andere löst ein Problem wieder so und so, und mit CakePHP beziehungsweise generell mit Frameworks hat man mehr oder weniger eine einheitliche Programmiersprache wieder in PHP, die eigentlich jeder schnell durchschauen kann.

  13. David

    Und nicht nur das. Also ich denke, dass einige doch wirklich auf Frameworks setzen sollten beziehungsweise, einen Standard bei der Programmierung verwenden sollten, wenn sie im Team arbeiten.

    Wenn sie alleine arbeiten und da guckt mir einer drüber, ist es eigentlich piep putz egal, aber sobald ich mit zwei Leuten im Team an einer Webseite arbeite, ist es natürlich ganz klar, dass man da alles kommentiert oder dass man Frameworks benutzt oder einen Standard benutzt oder was auch immer, ganz einfach um sicherstellen zu können, dass der Teamkollege auch jederzeit drübergucken kann und eingreifen kann, wenn man jetzt vom Auto überfahren wird oder was auch immer.

    Nein, selbst wenn, die Beine können sie mir abfahren, aber meine Hände brauche ich dann noch.

    CakePHP gibt's seit 2005 hast du mir geschrieben. Und ich kann mir denken, das kommt so ein bisschen aus der Ecke raus, wie Ruby on Rails, so von dieser Historie um das einfache Framework. Oder gab's da überhaupt keine Parallelen?

  14. Christian

    Also ich selber bin an der Entwicklung ja leider nicht be, beteiligt. Allerdings, was man so liest öffentlicherweise haben sich die Entwickler von CakePHP schon auf das, Ruby on Rails Framework bezogen, da die Idee dahinter eigentlich ja eine sehr, sehr gute ist und Ruby an sich ja auch eine sehr feine Programmiersprache ist, allerdings eben den Nachteil hat, dass es auf verschiedenen Hostern einfach nicht angeboten wird.

    Also auf den Wald-und-Wiesen-Hostern gibt's eben nun mal den Standard PHP MySQL und diese beiden Entwickler haben sich, so hab ich's jetzt gelesen zumindest, gedacht, warum diese Funktionalität von Ruby on Rails nicht auf, PHP projizieren.

  15. David

    Ja. Gehen wir noch auf ein paar Fakten ein über CakePHP, was das ganz generell ist. Es gibt ja die großen PHP Version vier und fünf. Ist das mit beiden kompatibel?

  16. Christian

    Ja, also ist vollends mit beiden kompatibel. Inwiefern es da irgendwelche Begr-- Einschränkungen innerhalb, der Entwicklung gibt, mag ich jetzt nicht, zu sagen, weil ich eigentlich immer nur noch mit PHP5 entwickle, aber ich kann mir schon vorstellen, dass da komplette Ausweichungen für beide Versionen vorhanden sind. Also generell unterstützt es aber sowohl vier als auch fünf.

  17. David

    Also diese Sendung dient auch eher dazu, einen groben Überblick über CakePHP zu geben. Was wir natürlich nicht machen, ist die verschiedensten Dokus durchwühlen, um dann hier einen gewissen Grad an, weiß ich nicht, Sachen rausgeben zu können, wie was funktioniert oder wie was nicht funktioniert. Aber doch ganz generell wichtig ist: Mit welchen Datenbanken funktionobelt das Ganze denn?

  18. Christian

    Also mit MySQL ist ja eigentlich ganz klar. Dann noch PostgreSQL und AdoDB. Über die beiden letzten kann ich wieder auch so nicht sagen, da hab ich keine Erfahrung mit, aber mit MySQL funktioniert das Ganze wunderbar.

  19. David

    Du hast ein paar Projekte schon, aufgesetzt mit CakePHP?

  20. Christian

    Ja, genau. Also derzeit sind's zwei Projekte, die damit laufen. Eines davon ist schon im produktiven Zustand und bisher wirklich toi toi toi, läuft alles wunderbar.

  21. David

    Dann erklär doch noch mal, anhand von so ein paar Punkten, wie wir uns CakePHP vorstellen können, was das-- inwiefern einen das unterstützt bei der Arbeit, sodass man Zeit spart oder dass man, einen gewissen Code einfach sauberer halten kann.

  22. Christian

    Mhm. Also anfangen tut das Ganze erst mal mit einer sauberen Struktur des Ordners. Also man lädt sich ja von der Cake-Homepage erst mal die aktuellste CakePHP-Version ra-- runter, entpackt die erst mal ganz normal und legt die auf seinen WAMP, also WAMP beziehungsweise LAMP-Webserver, je nachdem, wie man's will. Als Voraussetzung braucht man dazu eben einen Apache-Webserver. Läuft allerdings wohl auch auf dem Microsoft IIS, heißt er, glaube ich, ja.

  23. David

    Mhm. Genau.

  24. Christian

    Und eben eine, eine MySQL-Datenbank. PHP ist ganz klar. Schön ist, wenn man dann auch noch MotiveRight hat, weil das Ganze eben dann auch noch mit unterstützt wird. So, dann hat man diese, diese Ordnerumgebung und hat darin im Prinzip erst mal eine komplette Unterteilung in Model, Controller und View.

  25. David

    Das heißt, die Grundinstallation von Cake, bringt also seine Vorordnerstruktur quasi mit.

  26. Christian

    Genau. Und da ist noch mal das ganz Besondere: Man hat, einen Core-Ordner sozusagen und den fasst man während der Programmierung überhaupt nicht an. Die einzige Entwicklung läuft in einem App-Ordner, heißt der, der ist halt schon vorinstalliert. Das hat eben den Vorteil, wenn eine neue Cake-Version rauskommt mit zum Beispiel Sicherheitsupdates oder und so weiter, muss man in seinem Programmiercode an sich nichts ändern.

    Man tauscht einfach nur den Core aus und alle Funktionen, die man von Cake benutzt, werden auf den aktuellen Stand gebracht.

  27. David

    Was Vorteile hat, gerade aus dem Praxisalltag bei uns in der Agentur arbeiten wir derzeit mit Web Edition. Und Web Edition, da musst du sehr tief in den PHP-Code eingreifen, um spezielle Lösungen zu programmieren. Ganz einfach, weil, du ganz bestimmte Sachen ganz einfach nicht machen kannst.

    Und, wenn du dann richtig in den Core, sozusagen in den, in das Kerngehäuse von Web Edition oder von deinem System, was auch immer, eingreifst und machst da Änderungen, wirst du es mit den Updates schwierig haben. Oder du machst ein Update und deine ganzen Änderungen, die sind dann eben verloren. Also von daher ist die Trennung natürlich ganz gut.

    Ganz generell möchte ich auch noch mal sagen, dass grundsätzlich, sofern eine Webseite entwickelt wird und davon rede ich jetzt nicht, dass HTML und CSS geschrieben werden, sondern dass auch was programmiert wird in PHP, sodass ihr grundsätzlich darauf achten solltet, dass ihr das Design zum Beispiel grundsätzlich vom Inhalt trennt, das ist das Erste, durch Auslagerung von CSS und dass ihr die Programmierung auch trennt von euren Templates.

    Das machen nämlich sehr wenige, denn wenn ich mir so einige Projekte verschiedener Programmierer anschaue, sind, das PHP, Dateien, wo sieben Milliarden Echo drin sind, die irgendwelchen Code ausgeben, HTML-Code, und dafür mischt sich HTML und PHP vollkommenst drin und so hat man eigentlich keine Kontrolle. Also selbst das trennen und das macht CakePHP für uns.

  28. Christian

    Das macht CakePHP eigentlich vollautomatisch. Also erst mal das Grundlayout, also gehen wir jetzt mal ein ganz normales Projekt an. Ich kriege eine Grafikdatei, schneide mir die und mache da eben XHTML, ein XHTML-konformes Dokument draus und ein CSS Stylesheet. Dafür hat Cake schon eine eigene Struktur angelegt. Das heißt, das Stylesheet kommt in einen separaten Ordner, der schon vorgegeben ist und ich habe die Möglichkeit, verschiedene Layouts zu erzeugen.

    Also im Prinzip so was wie ein normales Template. Da packe ich meine x-- meine, meine Indexdatei sozusagen rein und kann dann wie in einem Content-Management-System auch einzelne Variablen in dem Layout, einstellen. Das mal so als, als Basis.

  29. David

    Das heißt, die Profis freuen sich, dass sie weniger Arbeit haben beim Anlegen solcher Projekte und die Anfänger in Sachen PHP freuen sich, dass sie schon mal ein Grundgerüst installiert bekommen haben, ne?

  30. Christian

    Genau, genau. Also es ist sowieso die Sache, wer mit CakePHP arbeitet, der kommt sehr, sehr schnell zu ersten Ergebnissen. Das ist eben auch das Schöne. Das Programmieren hat mir auf einmal viel mehr Spaß gemacht. Ich bin eigentlich auch eher so der Fan von XHTML und CSS. PHP mache ich zwar auch, war aber bisher nie so ganz von angetan, weil ich manchmal an Fehlern drei, vier Tage hing. Das ist mit CakePHP komischerweise mir nicht mehr so wirklich, begegnet.

  31. David

    Kann ich nachvollziehen. Zwar ist PHP auch wirklich mein Streckenpferd und ich mache irrsinnig viel in PHP, programmiere ja auch dieses Plugin Podpress für WordPress zum Beispiel. Aber ich kann es nachvollziehen deswegen, weil ich zum Beispiel JavaScript eigentlich in meinem ganzen Leben noch nie mochte.

    Vor allen Dingen, weil ich schon, vor vielen, vielen Jahren angefangen habe, an Webstandard zu glauben und, JavaScript am Anfang sowieso verpönt war als geht gar nicht. Und inzwischen macht es mir richtig Spaß, weil ich dann eben solche Sachen wie jQuery benutze, wo ich ganz einfach mit ein paar Handgriffen, hunderte Zeilen von JavaScript spare, die ich sonst hätte schreiben beziehungsweise programmieren müssen. Und in die Richtung geht natürlich dann auch CakePHP.

    Gibt es denn für Einsteiger, schöne Screencasts oder, oder Weblogs, die du grundsätzlich empfehlen könntest?

  32. Christian

    Ja, auf jeden Fall. Also im Prinzip die Hauptanlaufstelle für Interessierte ist sowieso die CakePHP-Homepage. CakePHP Punkt org, wird aber auch verlinkt. Ist eigentlich alles, was man im Prinzip erst mal braucht. Da gibt es ein großes Manual. Wenn man sich das durchliest, ist man eigentlich schon erst mal gerüstet für seine erste Applikation. Da ist, auch so was wie ein Tutorial drin, wo man mal einen kleinen Blog, einrichten kann beziehungsweise einen Blog programmieren kann.

    Hört sich jetzt groß an, ist natürlich erst mal nur ein ganz kleines Basisskript, aber zeigt auf jeden Fall in kurzen und knappen, Instruktionen, wie man mit CakePHP überhaupt arbeitet.

  33. David

    Also für den Einstieg ist es, ist gesorgt.

  34. Christian

    Auf jeden Fall.

  35. David

    Gibt es eine minimale Einstiegskonfiguration? Du hast mir vorher in so einem Skript geschrieben, etwas von Name Conventions. Was meint das genau?

  36. Christian

    Genau, also Naming Conventions sind eigentlich einer der großen Vorteile von CakePHP. Und zwar, kennen wir das ja aus diversen Content-Management-Systemen. Am Anfang muss man erst mal massig viel einstellen. Erst mal, die Datenbank ist logisch erst mal angeben, dann das Ganze installieren und so weiter. Dann muss man Sektionen anlegen und so weiter. Bei CakePHP läuft das Ganze mehr oder weniger komplett über Naming Conventions.

    Das heißt, man konfiguriert, das Skript an sich schon aus den Namen, die man vergibt. Das kann man sich so vorstellen, also können wir ja nachher noch mal kurz drüber reden über- -dieses Model Controller und View-Verhalten. Die funktionieren ganz allein auf Namensgebung. Das heißt, wenn ich jetzt zum Beispiel eine Funktionalität, bringen will für eine Tabelle, wo verschiedene Benutzer drin sind. Ja? Gehen wir ins Englische, heißt Benutzer natürlich User.

    Ich lege einfach eine Tabelle an, die heißt zum Beispiel, Users. Ja? Und da lege ich jetzt meine, meine verschiedenen, Werte rein. Was weiß ich, die ID, Name, Vorname, Login.

  37. David

    Straße, was auch immer.

  38. Christian

    Genau, genau. Irgendwas. Das reicht CakePHP eigentlich schon, um erst mal so einen kleinen Prototypen dazu zu entwickeln. Jetzt muss ich nämlich eigentlich nur noch das Model anlegen. Das Model nenne ich, das wird immer im Singular angegeben, also User würde das Model dazu heißen und der Controller dazu würde dann Users, weil der wird immer im Plural angelegt. Den müsste ich dazu anlegen. Das wäre im Prinzip eine Sache von ein bis zwei Minuten.

    Wenn ich dazu dann noch das Scaffolding aktiviere- -das erkläre ich auch gleich mal, habe ich innerhalb von zehn Minuten eine kleine Applikation, mit der ich meine Datenbank verwalten kann. Also dieses-

  39. David

    Das heißt, entschuldige, das heißt, dass CakePHP auch die Verzeichnisstruktur im Grunde genommen im Default vorgibt?

  40. Christian

    Genau. Also es gibt halt ein Verzeichnis für Models, ein Verzeichnis für Controller und ein Verzeichnis für Views. In den Views, wird ganz normal, der Output, eingetragen. Der Output sind eben alle, alle Echos zum Beispiel, die ich da so produziere, eben alles, was am Ende an den, an den Benutzer ausgegeben wird. In dem Controller, wird das definiert, die sogenannte Business Lo-Logic. Ich spreche da eher von Actions.

    Und zwar kann man sich das so vorstellen: CakePHP basiert darauf, dass eigentlich jede Datenbank immer dasselbe Prinzip hat. Ich habe einen ganzen Batzen von Daten, zum Beispiel habe ich zweihundert verschiedene User und mit denen muss ich im Prinzip in neunzig Prozent aller Fälle immer vier oder fünf Sachen machen. Und zwar hinzufügen, editieren, auflisten und löschen. Das sind so die, die Haupt, Sachen. Und diese Funktionalitäten bringt CakePHP an sich von vornherein mit.

  41. David

    Das heißt, ich habe mit sehr wenig Aufwand quasi, wenn ich jetzt eine Benutzerdatenbank mache, muss ich nicht alle Funktionen, alles neu schreiben und alles programmieren, sondern ich habe quasi schon einen, einen Standardbaum. Ich muss eine Tabelle anlegen und kann quasi direkt mit diesen Funktionalitäten loslegen, ne?

  42. Christian

    Genau. Also dafür würde dann eben das Scaffolding einsetzen. Das ist vielleicht ein paar Ruby-on-Rails-Benutzern unter uns schon ein Begriff. Und zwar beim Scaffolding wird eben aus der, aus den Datenbank, Tabellen dynamisch werden schon alle Inputfelder generiert. Also das heißt, wenn, wenn ich Scaffolding aktiviere, schmeißt mir Cake schon eine Auflistung der Tabelle automatisch raus, eine Editierfunktion, eine, eine Hinzufügen-, Funktion, eine, eine Löschenfunktion und eine Auflistung.

    Eben diese, diese vier genannten Hauptpunkte. Allerdings ist das Ganze natürlich im produktiven Stadium nicht wirklich nutzbar. Das ist eben nur, um mal schnell einen Prototypen rauszuhauen, da man sich das Ganze ja logischerweise auch grafisch anpassen möchte an seine eigenen Verhältnisse beziehungsweise an, an die Wünsche des Kunden.

    Da muss man dann natürlich schon manuell eingreifen, aber dabei wird man dann eben von CakePHP mehr oder weniger auch wieder unterstützt in der, Änderung seiner Formularwertung.

  43. David

    Genau, also für diejenigen, die mal schnell was rausschießen wollen, das sogenannte Scaffolding, was eben dir die Grundfunktionalitäten eben direkt bereitstellt. Und wenn du was mehr machen willst, könnte ich die jetzt bearbeiten als Basis, wenn ich jetzt Anfänger in Sachen CakePHP bin und benutz die als Basis und entwickel das weiter? Oder muss ich dann doch was eigenes entwickeln, weil diese Scaffolding-Methode wirklich nur ein begrenzter Rahmen ist?

  44. Christian

    Mhm. Man kann das Scaffolding natürlich sofern ausreizen, wie man das möchte. Man kann Scaffolding auch nur für verschiedene Model aktivieren. Also ich kann ja eine Anwendung hat ja mehrere Models, zum Beispiel Users und dann habe ich noch ein Model, zum Beispiel Blog Entries. Ja, wenn ich jetzt einen Blog aufziehen will mit verschiedenen Einträgen, ich kann dieses Scaffolding auch nur für ein bestimmtes Model aktivieren.

    Also meinetwegen sage ich: Na ja, User bearbeite ich nicht so oft, da brauche ich kein eigenes Template für, um das zu bearbeiten. Da schalte ich jetzt mal schnell Scaffolding an. Das kann man natürlich auch in der produktiven Umgebung einsetzen, aber generell, gibt es da keine Unterschiede.

    Also ich sag mal, es wird von CakePHP auch von der Entwicklerseite eben empfohlen, in produktiven Stadien, Scaffolding nicht wirklich zu nutzen, aber ich sag mal, für kleine Applikationen spricht da auch nichts dagegen, das, mal anzulassen.

  45. David

    Wie sieht es denn seitens CakePHP mit irgendwelchen Helferlein aus? Wie zu-- Gibt es irgendwelche Funktionen, die mir jetzt, eine einfache Möglichkeit geben, Bilder online zu stellen oder JavaScript einzubinden, Formulare zu machen, HTML zu machen? Gibt es da irgendwas?

  46. Christian

    Ja klar, das wären, wie du fast schon genau gesagt hast, die sogenannten Helper. Helper unterstützen den View, also den Output, alles das, was ich dem Benutzer in irgendeiner Art und Weise ausgeben will, darin verschiedene HTML-Tags, auszugeben. Also zum Beispiel Bilder. Ich will ein Bild ausgeben aus der Datenbank. Ich habe in der Datenbank eben den Dateinamen hinterlegt und möchte jetzt dazu das passende Bild ausgeben.

    Dann gibt es dazu passend einen HTML Helper, der den kompletten Image-Tag schon ausgeben kann. Also ich muss ihm im Prinzip nur noch, sagen, wo liegt das Bild, ja, in, in welchem Ordner, und er bildet daraus schon die passend, den passenden Pfad.

    Weil das Problem ist ja, ich kann ja eine Funktionalität unter verschiedenen Pfaden an, anlegen und wenn ich das Bild jetzt hart verlinke, dann kann es natürlich sein, dass wenn ich das in einem anderen Pfad aufrufe, der mir natürlich einen vier null vierer zurückgibt. Und das fängt CakePHP über die Helper automatisch ab. Da gibt es eben nicht nur für, für, für Bilder, sondern auch für Links, dass ich Links dynamisch, generieren kann. Was noch? Formularfelder kann ich damit dynamisch ausgeben.

    Wo wir eigentlich auch schon beim nächsten Punkt wären. Und zwar ist mehr oder weniger auch ein Helferlein. Das, muss ich gerade mal nachgucken.

  47. David

    Validierungsmodul meinst du wahrscheinlich.

  48. Christian

    Genau, genau, die Val, die Validation. Das kennen, denke ich, auch viele von uns, PHP-Programmieren. Ich habe ein Formular und davon sollen natürlich einige Formularfelder Pflichtfelder sein oder bestimmte Regeln verfolgen.

  49. David

    Genau, grundsätzlich die Standardaufgabe bei jedem Kontaktformular: Validier es doch erst mal, bevor du das abschickst. Und jeder quasi direkt einen PHP-Code einschleusen kann in dein Formular oder was auch immer. Also grundsätzlich immer validieren und dafür gibt es auch einen Helper in CakePHP.

  50. Christian

    Ja, das ist nicht mal wirklich ein Helper. Das ist schon eine, eine richtige Klasse, die das Ganze vornimmt. Und zwar muss ich da nur noch im Model definieren, ja, welche, welche Abhängigkeiten hat erst mal das Feld zu anderen Datenbanken zum Beispiel. Also ich kann auch in CakePHP Abhängigkeiten unter den Datenbanktabellen ganz, ganz schnell herstellen. Also wir kennen es als Join-Abfragen in MySQL.

    Die gehen damit auch relativ fix und ich kann im Model auch, schon die Validation Rules festlegen. Also welche Regeln hat denn jedes einzelne Feld dieser Validierungsleisten? Und, in der späteren Programmierung muss ich mir darum keine Sorgen mehr machen. Also bisher war es bei mir immer so, ich habe dann riesige If-Schleifen gebaut, die dann immer nachgefragt haben: „If das Feld leer, dann, put out error", so nach dem Motto. Jetzt mal doof gesprochen. In CakePHP ist das alles ganz easy.

    Also ich lege da ein Array an und, sage: „Das, das, das und das Feld, die müssen immer gefüllt sein", erst mal so als Basis und CakePHP meckert dann automatisch, wenn ich bei meinen, zum Beispiel in meinem Add, in meiner Add-Action, ein Feld davon aufgreife und das nicht ausfülle. Gibt es automatisch einen Fehler aus. Ja, da spare ich mir natürlich schon viel, viel Zeit, das immer manuell anzulegen, meine ganzen Kontr, Kontrollen.

    Und es gibt natürlich auch eine Möglichkeit, dann weiter greifende Regeln selber zu erstellen. Also wenn man, wenn es einem jetzt nicht reicht zu sagen: „Na ja, das Feld, das darf nicht nur leer sein, sondern das Feld muss gefüllt sein, wenn ein anderes Feld zum Beispiel- Gefüllt ist.

  51. David

    Ja, das heißt-

  52. Christian

    Also Abhängigkeiten untereinander.

  53. David

    Ja, das heißt, so 'n Helper kann ich mir wirklich vorstellen als meine Bibliothek, die ich nutze, um meine Abläufe besser steuern zu können. Also kleines Beispiel: Der erste Schritt ist, das hast du grade gesagt, so haben wir alle, glaub ich, mal angefangen, ist, dass wir, milliardenlange Switches schreiben oder, oder irgendwelche If-Schleifen oder was auch immer oder generell Schleifen und haben alles nacheinander abgefragt, jedes einzelne Feld.

    Da d-die Zweite, wenn man das sich 'n bisschen weiterentwickelt, könnte man eine Funktion schreiben, der man dann ein Array gibt, vielleicht noch 'n paar Konfigurationsvariablen und die das dann für einen automatisiert managt. Das macht man dann vielleicht irgendwann, wenn man vielleicht das zehnte Projekt hinter sich hat, dass man sich 'n bisschen Arbeit sparen will. Und CakePHP macht genau das.

    Es liefert uns Funktionalitäten, die muss ich zwar einmal lernen, aber einmal gelernt, kann ich sie ruckzuck anwenden. Gehen diese Validierungstools denn auch gleich drauf ein, dass sie, wenn ich jetzt 'n, 'n Login-Formular mache zum Beispiel, dass die gefährlichen schadhaften Code gleich rausnehmen oder gibt es da verschiedene Methoden, womit ich das dann gewährleisten kann?

  54. Christian

    Mhm. Also es hat 'ne Basisunterstützung für Verhinderung von Cross-Site Scripting. Also ich hab das bei mir in 'nem Projekt mal kurz ausprobiert, also schadhaften Code, injiziert. Der wurde gekonnt ausgefiltert. Wer allerdings eben auf Nummer sicher gehen will, der hat auch noch 'ne Sanitize-Klasse, nennt sich das. Da kann ich dann eben bestimmte Strings innerhalb der Programmierung auf von schadhaften Code befreien.

    Also ich muss dann nur noch sagen, den String jetzt, mach den frei von zum Beispiel HTML, Entities und dann macht er das vollkommen automatisch.

  55. David

    'n Stichpunkt habe ich hier noch stehen: Wie sieht es denn generell mit dem Caching aus für CakePHP?

  56. Christian

    Also Caching ist ja, wird auch, denk ich, in Zukunft immer wichtiger, einfach um Performancespitzen beziehungsweise Lastspitzen abzufangen. Das ist direkt in CakePHP schon, integriert. Das heißt, ich muss nur noch sagen, was gecacht werden soll und für wie lange. Also, ich geb das Ganze jetzt, jetzt aus, und natürlich ändert sich irgend 'n Benutzer. 'n Benutzer kommt dazu in der Liste.

    Dann ist CakePHP so schlau zu sagen, okay, die Datenbank hat sich geändert, also muss ich den Cache auch aktualisieren. Ja. Hat aber halt einfach den Vorteil, wenn ich jetzt 'n Skript habe, was sich eben doch nur alle paar Stunden mal ändert zum Beispiel, dann kann ich damit eben leicht, sagen, dass das Skript nur alle zwei Stunden mal gerendert werden soll- -aufs Neue. Und das wird dann temporär zwischengespeichert und wird dann dem Benutzer als statische Seite mehr oder weniger ausgegeben.

    Es sei denn eben, die Datenbank hat sich geändert oder, ich lösche den Cache manuell. Das kann ich natürlich auch jederzeit machen.

  57. David

    Das hab ich letztens auch bei Technikwütze selbst gemacht, dass ich 'n bisschen mit dem Caching rumgespielt habe. Denn, es gab, glaub ich, vor zwei, drei Sendungen, weiß ich nicht, da konnten einige Hörer von dem, Technikwütze-Podcast, die neueste Folge nicht laden, weil der RSS-Feed 'n bisschen down war.

    Trotz dessen, dass, Technikwütze auf 'nem eigenen Root-Server läuft, wo wirklich fast nur Technikwütze drauf ist. Und, das kam eben durch die Last zustande, dass sehr viele gleichzeitig auf diesen Feed drauf zugegriffen haben und dass das Ding dann Probleme hatte bei der Auslieferung.

    Und, Caching hilft natürlich dabei, dass geguckt wird, Mensch, wenn sich an der Sache eh nix geändert hat, dann speicher ich das Ding eben mal zwischen auf dem Server und lad nicht die Daten jedes Mal aus der Datenbank für jeden einzelnen User, sondern das ist jetzt 'ne statische Datei, die einmal erzeugt wurde, und die wird dann ausgeliefert, was wesentlich schneller ist, als wenn ich jedes Mal Datenbankconnections und Datenbankabfragen und so weiter mache.

    Und das, was ich jetzt zum Beispiel auch derzeit auf Technikwütze teste, das werden diejenigen User in den letzten Tagen festgestellt haben und auch in den nächsten ein, zwei Tagen, die mit 'm Safari auf technikwütze.de gegangen sind, dass die Stylesheets auf einmal nicht da waren. Das hängt zusammen, dass ich derzeit alle Stylesheets und alle JavaScript-Sachen auch noch mal cache und komprimiere als Gzip und das Gzip wird dann, zurückgeliefert an den Browser.

    Das heißt, das CSS und JavaScript wird nicht mehr quasi halbwegs vorgerendert auf dem, auf dem Server selbst, sondern wird dann alles, entpackt, also wird gepackt auf 'n Server, wird in kleinen Datenmengen zu dem User gebracht und dann wird es beim User selbst entpackt, was die Seite wesentlich schneller macht und den Server entlastet. Und CakePHP macht quasi für uns das auch.

    Und in gewissen Weisen kann ich das natürlich steuern, indem ich sage, das bitte nicht oder das bitte auf jeden Fall cachen, ne?

  58. Christian

    Genau, also ich kann natürlich auch verschiedene Elemente in meinem Layout davon ausschließen. Wär ja auch sonst doof, wenn ich irgend, 'n Element auf der Seite habe, was sich eigentlich bei jedem Seitenaufruf aktualisiert. Ich denk da zum Beispiel an irgendwelche Random Scripts, die irgendwas eben zufallsbasiert ausgeben. Das muss ich, muss ich dann natürlich auch vom Cache ausschließen, aber das geht in CakePHP ganz gut, dass ich dann eben nur einzelne Bereiche der Seite cachen lasse.

  59. David

    Genau. Das heißt, wenn ich 'n Caching bei mir auf die ganze Technikwütze-Seite stelle von zwei Wochen, das heißt alle zwei Wochen, gibt's dann was Neues, dann könnte ich zwar jede Woche 'ne Folge produzieren, aber ihr kriegt nur jede zweite Folge.

    Also ist es ganz gut, wenn man Teile der Seite cachen kann und die andere eben nicht.

  60. Christian

    Beziehungsweise man würde alle zwei Wochen eben auch zwei Folgen kriegen.

  61. David

    Oder so, ja.

  62. Christian

    Na ja.

  63. David

    Gehen wir doch noch mal kurz drauf ein: Was brauch ich denn, um CakePHP überhaupt benutzen zu können? Am Anfang hast du's gesagt, 'ne LAMP- oder WAMP-Umgebung. LAMP oder WAMP wird's auch genannt. Dahinter steckt nix anderes als, LAMP ist, - Linux, Apache

  64. Christian

    MySQL

  65. David

    Genau, jetzt hab ich einen kleinen Hänger.

  66. Christian

    PHP.

  67. David

    Und PHP natürlich, genau.

  68. Christian

    Häng auch schon.

  69. David

    Ein kleines Hungerchen. Das hab ich auch noch. Die Wamp-Umgebung ist natürlich das Ganze unter Windows und viele werden das Ding als Xampp nennen, oder kennen. Das kommt von Apache Friends. Dahinter steckt dann einerseits ein LAMP-Paket, andererseits ein, ein Linux-Paket dann noch und, und ein Wamp-Paket und alles ist da schön schick dabei.

    Also sobald ich keinen eigenen Server habe, jetzt bei keine Ahnung, Strato eins und eins oder OneBlue oder was auch immer, dann könnte ich zum Beispiel auch auf meinem Mac oder auf meinen, auf meiner Windows-Kiste, LAMP, WAMP oder XAMPP oder was auch immer installieren und könnte dann mit PHPCake loslegen, ne? CakePHP.

  70. Christian

    Genau, genau. Also ich selber hier hab auch 'ne, 'ne, 'ne normale Windows-, Entwicklungsumgebung. Da hab ich aber noch keine Unterschiede fest-festgestellt. Also mein Server ist auch, basiert, glaub ich, auf, auf Ubuntu. Glaub ich. Ja und da, da lief alles sofort genauso wie bei mir. Da gibt's eigentlich nicht wirklich Ansprüche und das ist eben auch der Vorteil von CakePHP.

    Also wenn ich grade was für Kunden entwickle, die haben eben nicht das Geld, um sich mal achtzig Euro für 'n Root-Server oder gut zwanzig Euro für 'n VPS-Server auszugeben, der dann eben komplett für sie läuft, sondern CakePHP kann ich auf jedem Wald- und Wiesenhost mehr oder weniger installieren. Was eben auch noch gut ist, worauf ja viele von uns in letzter Zeit abfahren, sind eben diese sauberen URLs mittels mod rewrite.

    Da tu ich mich selber auch immer schwer, eigene modrewrite-Regeln zu bauen. Einfach-

  71. David

    Ich schreib dir gerne welche.

  72. Christian

    Gut, da komm ich vielleicht mal drauf zurück. Gut, dass du das sagst. Nee, also mit CakePHP braucht man da eigentlich so gut wie kein Know-how mehr, was modrewrite angeht, weil der das eigentlich alles einem abnimmt. Also man hat ja diese Struktur, um's noch mal zu sagen, Model View Controller, um diese gute Trennung des Programmcodes voneinander zu erreichen und diese Trennung geht auch einfach in der URL weiter.

  73. David

    Ich glaube, die meisten wissen's und für diejenigen, die es nicht wissen: Wenn ich 'ne URL-Zeile im Browser habe, also eine Adresszeile einer Website und ich seh zum Beispiel den Pfad, dann ist es nicht sicher, dass unter diesem Pfad, dass A, dieser Pfad auf dem Server wirklich existiert und dass die Datei überhaupt existiert unter diesem Namen. Das muss alles gar nicht sein. Das heißt, ich könnte mit URL Rewrite ständig meine Sachen umbenennen.

    Das macht man hauptsächlich dafür am Anfang, wenn ich 'ne PHP-Programmierung, eben schreibe und, ich übergebe irgendwelche Variablen. Ist das zum Beispiel Index PHP, Fragezeichen, Action gleich do something und lösche User und User-ID so und so. Und, dieses mod rewrite meistens in der HT Access steckt das Ganze drin. Da kann man solche Regeln dann definieren.

    Die sind eben dafür da, dass ich 'nen, 'nen schönen URL habe, wie zum Beispiel meine Domain Punkt de, Controller hast du mir geschickt, Slash Action, Slash Parameter und dann schluckt das Google auch ganz toll. Da kann man ganz tolle Sachen mit machen. Ist bei Technikwirt zum Beispiel so, jetzt grade wenn ich mit dem Caching bisschen rumspiele, dass meine, CSS Style Sheets in einem ganz bestimmten Verzeichnis sind.

    Und wenn ich die jetzt, in ganz an ein anderes Verzeichnis schicke, zum Beispiel das nenn ich einfach Caching, das existiert nicht wirklich, dieses Verzeichnis, aber sobald diese URL auftritt, weiß es: Ah, ich muss jetzt meine PHP-Datei aufrufen, wo das Caching gesteuert wird und dann, zeig ich die nicht ganz normal im Browser nach. Ganz kurz zu CakePHP. Und war sollte ich, um es benutzen zu können, 'n bisschen Ahnung von OOP haben. Das ist die objektorientierte Programmierung, richtig?

  74. Christian

    Genau. Also CakePHP an sich ist auch komplett objektorientiert und von daher wär's eben nicht verkehrt, objektorientierte Programmierung, auch zu beherrschen. Ich sprech da selber so 'n bisschen aus Erfahrung. Vor CakePHP hab ich mich, mit OOP immer 'n bisschen schwergetan. Also ich hab da zwanzig Tutorials drüber gelesen und war danach trotzdem noch nicht so ganz schlauer.

    Aber, nee, ich weiß nicht, woran's liegt. Also ich war da, glaub ich, immer 'n bisschen, doof im Kopf, keine Ahnung, aber ich hab dann mit CakePHP angefangen und komischerweise, wenn man mit CakePHP arbeitet, begreift man relativ schnell auch, wie so 'ne objektorientierte Programmierung auch abläuft, also wie das mit den ganzen Klassen und Methoden-

  75. David

    Genau, es geht auch ganz schnell. Also objektorientierte Programmierung, wer Klassen geschrieben hat in PHP, weiß, was das ist. Grundsätzlich, also als ich mit PHP angefangen habe, hab ich natürlich auch recht schnell auf OOP geschaut. Und das Problem, was ich am Anfang hatte, war nicht, es zu kapieren, wie ich das anwende, sondern das Problem am Anfang hatte ich, zu begreifen, warum ich jetzt Klassen programmieren muss in PHP, wenn ich doch alles mit Funktionen machen kann.

    Das war mein Problem damals. Heute bin ich natürlich schlauer und heute kann ich mit Klassen ganze Funktionsstränge kapseln oder ich kann jetzt Klassen erweitern, die ich zum Beispiel benutze, indem ich zum Beispiel Peer-Pakete, installiere und benutze, zum Beispiel zur Datenbank Connection oder was auch immer. Da kann ich mir 'ne ganze Menge Arbeit ersparen. Und das bietet auch CakePHP frei Haus sozusagen, ne?

  76. Christian

    Genau, genau. Also sag mal, wer jetzt wirklich der komplette Einsteiger in PHP ist und wirklich noch gar keine Ahnung hat, der wird sich damit vielleicht am Anfang 'n bisschen schwer tun. Also da sollte man schon so 'n bisschen Know-how haben. Bei mir war's eben, ich wusste thematisch, über OOP wunderbar Bescheid, aber wie das Ganze praktisch, aussieht, hatte ich mir eben trotz Tutorials irgendwie nie richtig annehmen können.

    Aber nachdem ich mir dann, also das ist eben auch der, der, was man unbedingt machen sollte, sich mal irgend 'n Test-, Projekt runterladen, wie so 'n Cake-Projekt überhaupt mal aussehen könnte.

  77. David

    Ist ja geil.

  78. Christian

    Dafür, dafür gibt's die, gibt's Cake Forge. Verlinken wir auch noch mit. Da gibt's eben fertige Cake Projekte, die man sich runterladen kann. Ist auch wunderbar zum Lernen geeignet, einfach weil man mal gucken kann, wie an, wie andere überhaupt mit dem, Quellcode arbeiten und man das dann in seine eigenen Projekte eben eigentlich, übernehmen kann, beziehungsweise man damit relativ schnell lernt.

    Ja, und so bin ich eigentlich auch zu OOP dann, mehr oder weniger gedrängt worden, einfach weil CakePHP einen dazu ja mehr oder weniger auch zwingt, ne.

  79. David

    Was auch richtig ist.

  80. Christian

    Ja, ja, nee, es, es hat ja eigentlich nur Vorteile- -aber man muss es eben trotzdem erst mal so wirklich lernen.

  81. David

    Genau. Das ist ja, warum PHP gut für Einsteiger ist. Also grundsätzlich sollte man, wenn man programmiert und HTML, wie gesagt, programmiert man nicht, das schreibt man. Aber wenn man jetzt richtig programmiert mit den jeweiligen Sprachen, dann sollte man das in der OOP Methode tun. Und, PHP hat eben, für Anfänger den Vorteil, dass man auch ohne OOP diverse Sachen realisieren kann, aber mit OOP macht's dann eigentlich richtig Spaß.

    Christian, du hattest anfangs der Sendung, von der MVC Architektur gesprochen. Gehen wir doch mal genau darauf ein: Was ist mit diesem Model Controller und View eigentlich ganz genau gemeint?

  82. Christian

    Genau, also am Anfang steht eben das Model, was auch für das M in MVC steht. Das Model regelt mehr oder weniger automatisch, zum Beispiel mögliche Abhängigkeiten zwischen den Tabellen. Also das kennen wir eigentlich alle. Zum Beispiel wieder das Beispiel: Ich hab Benutzer, also Users, und diese sind in verschiedenen Gruppen unterteilt. Ja-

  83. David

    Ja, oder ich habe zum Beispiel eine Tabelle für die Benutzer und ich hab 'ne zweite Tabelle in der Datenbank, wo jetzt zum Beispiel, die Hobbys drin sind, die Adressen und so weiter. Und das hab ich eben getrennt. Und um die Abhängigkeit zwischen diesen beiden Sachen zu machen, das heißt, ich habe den Benutzer aus der einen Tabelle und dem gehört aus der anderen Tabelle noch die Adresse, das sind die Abhängigkeiten. Und die- -, regelt quasi das Model bei CakePHP, ne.

  84. Christian

    Genau, und zwar ganz einfach, das liest sich, das ist eben auch, was ich so aus jQuery kenne: Man liest den Quellcode und versteht ihn direkt. Also man muss eigentlich gar nicht mal so was übersetzen. Wenn, wenn ich mir meinen Quellcode durchlese in CakePHP, dann, dann versteht man den direkt, wenn man ein bisschen Englisch kann. Und so läuft das im Model eigentlich auch, wenn ich Abhängigkeiten mache. Ich setze da einfach 'ne, 'n Array, das heißt has many.

    Und damit, also es gibt verschiedene Abhängigkeiten. Es gibt has many, belongs to zum Beispiel, nur mal um so ein paar Beispiele zu nennen. Und darüber kann ich einfach sagen, welches Datenbankfeld mit welchem anderen Datenbankfeld in Verbindung steht. Früher haben wir das eben über Joinupfragen gemacht. Das regelt CakePHP für uns mehr oder weniger jetzt vollkommen automatisch. Dann stellt das Model auch noch Methoden zur Datenverarbeitung aus der Datenbank bereit.

    Das ist ein ganz, ganz wichtiger Punkt, denn bisher haben wir unsere SQL Statements ja alle auch immer selber geschrieben, beziehungsweise haben uns dazu 'ne Klasse gebaut. Das hat CakePHP auch alles schon mit drinne. Also gerade wenn ich irgendwelche Datenbankfelder selektieren will, zum Beispiel ich will einen ganz bestimmten Datensatz mit irgend'ner bestimmten ID auswählen aus meiner Datenbank, dann geht das über, über diese Methoden sehr, sehr schnell. Also ich kann sagen-

  85. David

    Das heißt, ich muss quasi fast keine mehr, keine SQLs mehr schreiben und muss jetzt mein Select- Bla from Users machen, sondern ich habe da meine Methoden. Und so 'n Beispiel hast du uns auch zusammengestellt. Das packen wir dann auch noch mal auf Technikbitze. Das ist zum Beispiel this user find by name und dann gebe ich jetzt zum Beispiel seinen Alias ein und, CakePHP macht für uns eine SQL, schickt sie an die Datenbank und gibt uns das Ergebnis.

    Und wir haben quasi nur einmal gesagt: "Hey, hol mir das Ganze mal", und CakePHP macht den Rest. Ist doch eigentlich super komfortabel, ne?

  86. Christian

    Ist super komfortabel. Man, ich will nicht sagen mal verlernt irgendwann SQL, das glaub ich nicht. Aber das Ziel, so steht's auch in den, in den, in den CakePHP Anleitungen, ist eben, dass man möglichst gar keinen, gar kein eigenes SQL mehr schreiben sollte, einfach weil's auch den Vorteil hat, dass man später theoretisch zwischen den kompletten Datenbanken wechseln kann.

    Also- Angenommen, ich sage auf einmal: "Ach nee, meine Webseite soll jetzt nicht mehr auf MySQL laufen, sondern auf PostgreSQL". Dann könnte ich ja theoretisch einfach das in der Datenbankkonfiguration einmal umstellen- Und hätte weiter keinen Aufwand. Deswegen sagt man, sollte man eben von, von eigenen SQL Statements Abstand nehmen, aber ich hab auch die Erfahrung gemacht, dass es manchmal einfach nicht anders geht.

    Also so gut CakePHP da ausgearbeitet ist, manchmal braucht man so wilde SQL Abfragen, die kann CakePHP einfach nicht selber verwalten. Und ich sag mal, es ist ja relativ selten, dass man einfach mal so von MySQL auf AdoDB oder auf PostgreSQL wechselt. Ja, also ich sag mal, der Standard unter Webentwicklern ist ja meistens so MySQL und von daher ist es nicht so schlimm, wenn man sich dann doch mal eine eigene SQL Abfrage basteln muss.

    Aber für die Standardabfragen beziehungsweise auch das Schreiben in die Datenbank, das ist wunderbar einfach. Also wirklich, es ist schwer zu beschreiben, weil's einfach so ein mächtiges Tool ist, aber jeder, der irgendwie Webentwicklung betreibt, sollte sich das wirklich, mal anschauen. Also-

  87. David

    Sagen, sagen wir mal so: Also grundsätzlich sollten solche Frameworks einem nicht die Arbeit komplett abnehmen, sodass man sich als Dummy hinstellen kann, vergisst die Grundsätze von HTML, von CSS, von PHP, von MySQL, vergesst das alles, sondern benutzt, das CakePHP und das macht für euch alles automatisch. Ist natürlich Quatsch.

    Weiterhin solltet ihr euch, euch mit der Materie auskennen, aber es ist auch für Profientwickler unglaublich 'n Vorteil, wenn man nicht jedes Mal alles selbst programmieren muss oder kopiert 'ne halbe Stunde seine, seine ganzen Skripte hin und her, die man einmal programmiert hat, sondern man setzt, man nimmt eine Basis, mit der man sehr, sehr schnell seine Projekte realisieren kann.

    Also beispielsweise hatten wir eben, ich will was aus der Datenbank haben, ich schreib zuerst 'ne Query, schick die zur Datenbank, hol das Ergebnis ab, pack mir das in ein Array oder in ein Objekt, gebe dieses Objekt aus. Und in CakePHP oder in anderen Frameworks sage ich ganz einfach: "Hey, hol mir genau jetzt den Benutzernamen" und somit kann ich viel schneller Projekte realisieren.

    Aber du hast es grade angesprochen, wenn's dann doch 'n bisschen professioneller wird, hat man zwar seine Basis an diesen Funktionen, womit ich schnell Sachen realisieren kann, kann aber trotzdem noch eingreifen und gewisse Sachen selbst programmieren. Also CakePHP ist auch noch so flexibel, dass ich da wirklich händisch noch eingreifen kann, ne?

  88. Christian

    Genau, das war mir, damals in der Wahl des, des Frameworks ja auch sehr wichtig, dass ich nicht eingeengt bin. Also so schön 'n Framework ist, wenn ich nicht die Flexibilität habe, also beziehungsweise irgendwann an einem Punkt da bin und sagen muss: "Ah, Mist, das kann ich ja überhaupt nicht umsetzen, weil mein Framework das nicht mitmacht", wäre schlecht. Ja, also wir haben ja alle irgendwo PHP Know-how und das wollen wir manchmal auch anwenden.

    Und wenn das Framework da eben noch nicht so mitspielt, muss man immer die Wahl haben, das trotzdem selber auf die Beine zu stellen. Und da, hab ich bisher in CakePHP wirklich noch nie Grenzen erlebt. Man kann sich ja im Prinzip auch eigene-- Also man kann CakePHP auch selbstständig erweitern. Ich zum Beispiel schreibe mir auch selber Helper für Sachen, zum Beispiel wenn ich Menüpunkte ausgeben will, dynamisch, schreib ich mir dazu 'n Helper.

    Ist im Prinzip ja wie 'ne Funktion, die ich mir anlegen kann und auf die kann ich dann überall zugreifen. Also ich kann mir CakePHP auch selbstständig erweitern und kann mir daraus im Prinzip dann noch mein eigenes Framework, bauen. Also angenommen, wir haben-- Es hat ja jeder immer noch so seine Vorstellung, wie das Ganze auszusehen hat und, bei CakePHP wäre es durchaus möglich, dass man sich trotzdem auf dem Framework noch mal so seine eigene Entwicklungsumgebung zusammenschustert.

  89. David

    Warum nicht? Kommen wir zum Controller. Was ist der Controller bei CakePHP?

  90. Christian

    Das soll den nicht vergessen. Der regelt die Actions des, Models. Also beziehungsweise da wird von der Business Logic, gesprochen im Controller, wie man das auch immer verstehen mag. Auf jeden Fall regelt der Controller aus meiner Sicht die einzelnen Actions des Programmcodes.

  91. David

    Das heißt, das bedeutet, wenn ich jetzt Funktionen brauche, wie zum Hinzufügen, Editieren-

  92. Christian

    Genau, genau.

  93. David

    -löschen eines Benutzers oder du hast es aufgeschrieben, Login oder Logout, dann sind das sogenannte Actions. Und das macht der Controller, der, der stellt die quasi zur Verfügung dann, ne?

  94. Christian

    Exakt. Und das geht wahnsinnig schnell. Also man hat ja eben das Model, zum Beispiel Users, da sind ganz, ganz viele User drinne und mit denen, wie schon angesprochen, will ich ja irgendwas machen. Ne? Basismäßig natürlich hinzufügen, editieren, löschen, aber in dem Beispiel kommt zum Beispiel auch Login vor. Also ich möchte mit dem User ja auch was anderes machen, als ihn nur hinzuzufügen und zu löschen, sondern ich möchte denen zum Beispiel auch ein Login bieten.

    Und dav-dafür kann ich eben diese Actions bauen und in den Actions natürlich auch die Logik der Applikation erstellen. Also meinetwegen auch eventuelle If-Abfragen, die eben im Programmcode vorkommen müssen. Da kann ich mir die Actions, sozusagen zusammenschustern. Ja.

  95. David

    Kommen wir vielleicht noch mal zum kurzen Ende, zur Technikwürze, falls wir jetzt bald in, das Wochen, in die Woche entlassen, sozusagen noch mal zum View. View, das kann sich jeder denken, ist quasi die Darstellung der Webseite, ne? Was macht der View in CakePHP?

  96. Christian

    Der View ist eigentlich zuständig für alle Ausgaben, die, den Browser betreffen, also alles, was ich dem Benutzer in irgendeiner Art und Weise ausgeben möchte. Der View hat dann auch den Zugriff auf diese, Helper, zum Beispiel Ajax Helper ist auch 'n wunderbares Ding, also auch für Ajax-Entwickler beziehungsweise eben JavaScript-Entwickler bietet, CakePHP eine wunderbare Schnittstelle im View.

    Und ich kann wiederkehrende Bereiche, also zum Beispiel ich hab 'ne Login-Box, die will ich nicht nur auf im Login haben, sondern ich möchte die auch immer rechts in meinem Seitenrand darstellen. Kann ich damit auch lösen. Und zwar sind das die sogenannten Elements. In den Elements kann ich eben verschiedenste Objekte ablegen und die dann in meinem Skript an beliebigen Stellen aufrufen. Egal wa, egal wo, egal wann.

  97. David

    Sehr schön. Grundsätzlich denk ich, haben wir CakePHP sehr gut vorgestellt. Fallen dir noch ein, zwei kleine Sachen ein, wo du sagen könntest, Leute, dafür benutzt ihr bitte CakePHP? Oder ganz generell, warum sollte man CakePHP deiner Meinung nach einsetzen?

  98. Christian

    Also CakePHP sollte man auf jeden Fall dann einsetzen, wenn man schnell zu 'nem, Ergebnis kommen muss. Also kennen wir ja alle, die Entwicklungszeiten sollen immer kürzer werden.

  99. David

    Oder weil das Wochenende naht, ja.

  100. Christian

    Oder weil das Wochenende naht, weil wir schnell in den Feierabend wollen. Genau. Dann sollte man Cake auch beziehungsweise erst mal die Überlegung anstellen, Cake zu benutzen, eben wenn man mit verschiedenen Benutzern arbeitet, weil das das Ganze wirklich unheimlich erleichtern kann.

    Wo man Cake vielleicht nicht einsetzen sollte, um mal 'n Fall zu nennen, weil es ist ja auch nicht das Alleskönner-Tool, sage ich jetzt mal, jeder hat da irgendwo seine, seine, jedes Framework hat irgendwo ja auch so gewisse Grenzen. Ist vielleicht wirklich, wenn man so was aufziehen würde wie, ja was, was, -

  101. David

    'n Finanzportal zum Beispiel.

  102. Christian

    Ja, irgendwas Riesengroßes. Irgendwas, was die Welt noch nicht gesehen hat. Also zehnmal gro, so groß wie eBay zum Beispiel. Keine Ahnung, ja. -

  103. David

    Ich hätte Lust drauf.

  104. Christian

    Dann lass uns loslegen. Mit CakePHP ist das übermorgen fertig. Nee, nee, nee. Nee, also worauf man dann vielleicht auch so'n bisschen achten sollte, ist halt die Performance. Das kennen wir alle. 'n Framework hat eben auch den Nachteil, dass man nicht die Performance hätte, die man bei einer Selbstprogrammierung hätte. Einfach weil, weil, weil 'n Framework auch 'n bisschen Überhang mitbringt, den man einfach nicht braucht. Das ist aber normal.

    Aus meiner Sicht, dass immer ein paar Funktionen dabei sind, die man nicht braucht, die aber natürlich trotzdem irgendwo ja ausgeführt werden müssen.

  105. David

    Das kennen sicherlich die meisten jetzt von JavaScript-Bibliotheken, es gibt oder was auch immer, die einen Bunch von Sachen jetzt mitliefern, mit denen ich alle Sachen einstellen kann und die meisten nutzen es vielleicht für eine mickrige kleine Lightbox oder was auch immer.

  106. Christian

    Exakt, exakt. Und grade bei JavaScript ist ja dann noch das Problem der Ladezeit. Gut, das kann uns bei PHP Frameworks egal sein, weil keiner sieht, wie viel Dateien da aufm Server liegen. Aber, was eben so die Passzeiten, also die Berechnungszeiten der Seiten angeht, kann man da eben schon einen Trend beobachten, der eben das Ganze doch etwas langsamer macht. Also jetzt nicht merklich langsamer, aber ich sag mal, also zum Bei-, ich zum Beispiel nutze derzeit noch kein Cage.

    Ich denke mal, wenn man das Ca-, wenn man die Caging-Komponente benutzt, wird das Ganze auch nicht mehr merklich ins Gewicht fallen. Aber ich sag mal, man merkt es halt schon ein bisschen. Wenn ich das Ganze jetzt wirklich von Hand auf manuell programmieren würde, wären die Passzeiten sicherlich ein paar Millisekunden, niedriger als jetzt mit CakePHP.

  107. David

    Ja, ich denke, man merkt es auch dann, wenn die ganze Anwendung noch eben skaliert oder wenn die Benutzerzahlen dann steigen, dann sollte man dann schon mal noch mal gucken, ob man das eine oder andere noch mal optimieren kann. Was auch grundsätzlich auch jetzt nicht nur für CakePHP, steht, sondern man sollte grundsätzlich auch HTML, CSS und auch PHP und alles, was man macht, grundsätzlich nach einem halben Jahr spätestens noch mal kontrollieren.

    Kann ich da gewisse Sachen optimieren?

  108. Christian

    Ja, das kenne ich.

  109. David

    Ich hab während meiner Zeit schon viele Webdesignkollegen gesehen, die gehen morgens zur Arbeit, können ihre Basissachen, gehen abends wieder nach Hause und vergessen dann alles und entwickeln sich im Laufe der Jahre einfach gar nicht weiter, sondern bleiben an einem bestimmten Punkt stehen, kümmern sich überhaupt nicht mehr drum und können die Basissachen, aber, wissen auch gar nicht, wie wichtig es ist, dass man selbst seine eigene Arbeit noch mal kontrolliert im Laufe der Zeit und optimiert.

  110. Christian

    Mhm, mhm. Dazu hatte ich ja schon mal irgendwo einen Kommentar, glaube ich, hier geschrieben. Das ist eben so ein bisschen das Problem, was, glaube ich, die Arbeitnehmer, manche Arbeitnehmer von uns haben. Einfach, warum soll man sich fortbilden, wenn man eh monatlich sein Gehalt bekommt? Das ist aus meiner Sicht eben eine, eine komische Einstellung, aber ich denke auch irgendwo verständlich.

    Also gut, das würde jetzt zu tief greifen, aber aus meiner Sicht, kann ich die Leute teilweise auch verstehen. Also warum soll man sich weiterarbeiten, wenn man weiterbilden, wenn man am Ende des Monats teilweise wirklich nur ein paar Kröten aufs Konto bekommt? Ja, nee, ist ja, ist ja so. Ja, aber ich sag mal, jetzt in, in meinem Bereich, ich, ich bin ja auch mehr oder weniger selbstständig beziehungsweise Freelancer und da lebt man ja davon, dass man immer irgendwo innovativ arbeitet.

    Und ich kenn's von mir genauso. Also wenn ich mir eine Seite angucke, die ich vor drei Wochen umgesetzt habe, ist teilweise schon wieder, sind teilweise schon wieder Sachen drin, wo ich sage, mein Gott, das hätte man doch viel, viel besser umsetzen können.

  111. David

    Ja. Na, ich würde mal so sagen, also für diejenigen, die ihren Job wirklich als Berufung ansehen und das wirklich richtig, richtig gern machen, weil es die Lebensaufgabe ist, wie es bei mir zum Beispiel der Fall ist, dann sehe ich es als meine verdammte Verpflichtung an, mich jeden Tag weiterzubilden. Die Blogs der anderen Kollegen lesen, Podcasts hören, mich ständig weiterbilden, meine eigenen Methoden ständig zu kontrollieren.

    Aber da muss ich dir auch recht geben, dass es natürlich auch Arbeitgeber gibt, die sagen: „Mensch, HTML zum Beispiel schreiben macht mir Spaß, aber ich bin jetzt nicht so der Freak und der möchte ich auch gar nicht sein und das ist mein Job, damit verdiene ich Geld." Und meine Güte, da-- grundsätzlich sage ich auch, ihr müsst euch weiterbilden, aber okay, denn ich habe ein kleines Grundverständnis, um dann zu sagen: „Okay, das ist für dich nur ein normaler Job." Worunter die Qualität in der Webseite nicht leiden sollte, das ist ein anderes Thema, aber-

  112. Christian

    Tut sie leider.

  113. David

    Wir schweifen zu sehr. Gleich habe ich noch ein Schlusswort. Da möchte ich, dass du vielleicht auch noch mal kurz dabei bleibst. Ansonsten sage ich, Christian Vogt, noch mal vielen Dank, dass du uns einen Einblick in CakePHP gegeben hast.

  114. Christian

    Ja, nichts zu danken. Ich denke, das ist vielleicht noch ein bisschen konfus gewesen, was ich manchmal so erzählt habe, aber man möge es mir verzeihen aufgrund meiner niedrigen Podcast-Erfahrung.

  115. David

    Die wird steigen, denn, was du mir auch noch vorhin als Skript geschrieben hast, sind zum Beispiel ein paar Anwendungsfälle, die man sich denken könnte. Wenn du Lust hast, würde ich dich gerne noch mal demnächst zu einer Sendung in Sachen CakePHP einladen, wo wir vielleicht einen Schritt weitergehen und einfach ein paar Beispiele bringen oder grundsätzlich mal ein bisschen genauer in die Thematik dann einsteigen.

  116. Christian

    Ja, das, da würde ich doch glatt Ja zu sagen, weil das denke ich auch vonnöten wäre. Also wir konnten ja jetzt auch nur alles so ein bisschen umreißen. Man hat es vielleicht auch gemerkt, manches, muss man sich einfach noch im Detail angucken. Also man muss da auch sehr wissbegierig sein, um in CakePHP weiterzukommen, aber wenn man das tut, dann dankt es einem das Framework, denke ich, auch ganz gut. Also ich wäre auf jeden Fall dabei, wenn es da noch mal eine Sendung zu geben würde.

  117. David

    Die machen wir noch. Wir lassen es noch mal ein bisschen sacken und, nächste Woche, da, also diese Woche noch mal kurz, gibt es keine News von mir aufgrund dessen, dass wir eben das schöne Gespräch jetzt hatten mit dir, Christian, und die Sendung ein bisschen fortgeschritten ist in, in, an der Zeit. Nächste Woche gibt es wieder News.

    Jetzt hatten wir in der Folge 76, hatte ich mal angesprochen, liebe Technikbütt-Zuhörer, möchtet ihr grundsätzlich den Podcast weiterhin in Stereo oder weiterhin in Mono? Hatte gesagt, dass sich dadurch die Downloadzeit der Datei, weil sie eben kleiner ist, verringern würde.

    Jetzt haben ein paar User, ein paar Hörer gesagt: „Mensch, grundsätzlich könntest du auch vielleicht mal die Musik weg lassen." Und da meine ich, ja, grundsätzlich wäre das möglich, denn dann hätte sich das eh erledigt und dann könnte ich gleich auf Mono umstellen. Nein, es ist im Prinzip, gibt es ein Pro und ein Contra derzeit in der Diskussion, zu der Folge Nummer 76. Ich werde es jetzt heute in dieser Sendung noch nicht ganz auflösen, sondern dann wahrscheinlich in der Technikbüttze 78, 79.

    Da werden wir eine Lösung finden. Diskutiert auch bitte in dieser Folge noch mal mit: Möchtet ihr Technikbüttze mit Musik am Ende und dann würde die Technikwürze-Folge in Stereo in großer Datei dann folgen. Oder möchtet ihr das Ganze dann ohne Musik, weil ihr eben Podcast, Podcaster, blödsinn, Musikhörer seid, also ihr sucht euch eure Musik dann selbst raus und das ganze Ding geht in Mono. Schreibt uns bitte oder ruft an unter null fünf elf in Hannover einundzwanzig siebenundzwanzig dreihundert.

    Das machen übrigens zu wenige. Ruft mal an, es beißt auch keiner am Telefon. Dann stellen wir das ganz gern mal in die Sendung. Diese Folge machen wir mal eine Ausnahme. Diese Folge gibt es mal keine Musik und diese Folge wird in Mono ausgeliefert. Das heißt, die Dateigröße sollte dann kleiner sein. Und dann schauen wir einfach mal, ob ihr was vermisst habt oder ob ihr sagt: „Nein, bitte wieder mit Musik und in Stereo." Das klären wir dann in Ausgabe sieben, achtundsiebzig oder neunundsiebzig.

    Komme schon bei den ganzen Folgen durcheinander hier.

  118. Christian

    Ja, sind, sind ja auch gut viele. Wenn ich da direkt mein Statement mal, mal kurz abgeben darf.

  119. David

    Gern, gern. Wenn du schon mal gleich in der Sendung bist.

  120. Christian

    Genau, genau. Be-bevor ich jetzt wieder eh 'n Kommentar schreibe, kann ich's auch gleich sagen: A-also wenn ich ehrlich bin, hab ich mir die Musik bisher selten angehört. Allerdings, denk ich, liegt das auch immer an dem jeweiligen Musikgeschmack. Technikwürze setzt da ja doch sehr auf rockige Töne. Manchmal hab ich da einfach, nicht so, nicht so den, ja, das Gefühl für, sage ich jetzt mal. Ist aber natürlich auch, auch schwer. Der eine oder andere wird sich das immer anhören.

    Ich überspring sie meistens einfach am, am Ende, weil mich, mich selber die, die Themen mehr interessieren und, die Musik für mich eben mei-mehr-- meist so 'n Beigeschmack ist und ich mir dann selber immer meinen Win-Winamp oder was weiß ich sonst starte und meine eigene Musik dann meist höre.

  121. David

    Genau, das haben auch einige schon bereits bei Technikwürze, dokumentiert. Deswegen ist auch die Musik ganz immer am Ende, weil man kann nicht jeden Musikgeschmack treffen. Und ich bin ganz ehrlich, wenn ich die Musik aussuche, dann gehe ich nicht immer, aber doch meistens nach meinem Geschmack und der passt natürlich auch nicht vielen. Deswegen die Musik am Ende.

    Aber grundsätzlich ist die Frage, wenn ihr lieber vielleicht ohne hören wollt und das in Mono, dann spare ich mir vielleicht fünf Minuten Sendezeit und, ihr euch vielleicht ein paar Downloadminuten. Aber sei's drum. Christian, vielen Dank für die ganz interessante Sendung. Gleich kommt noch der Jingle, wie gesagt, ohne Musik das Ganze und wir hören uns wieder nächste Woche Montag. Dann gibt's wieder 'ne neue Sendung. Und demnächst, denkt dran, kommt auch der erste Video-Podcast.

    Aber dazu demnächst mehr. Vielen Dank, Christian, dass du dabei warst.

  122. Christian

    Ja, vielen Dank noch mal für deine Einladung. Tschüss.

  123. David

    Und schöne Grüße nach Magdeburg noch.

  124. Christian

    Magdeburg, es heißt Magdeburg. Aber okay.

  125. David

    Magdeburg. Alles klar. Bis dahin.

  126. Christian

    Okay, danke. Tschüss.

Was ist CakePHP?

  1. Kurze Erklärung zum Begriff Framework
  • Paket mit vorgefertigter Entwicklungsumgebung
  • Frameworks sind für verschiedenste Sprachen verfügbar (JavaScript, Ruby, Python, ...)
  • Sollen meist zur schnelleren Entwicklung von Applikationen dienen
  • Haben oft verwendete Funktionen bereits im Kern integriert um den Umgang mit der jeweiligen Sprache zu erleichtern.
  1. Angelehnt an das Framework Ruby on Rails, nur eben auf PHP-Basis
  2. Entwicklung seit 2005 durch die Cake Software Foundation bzw. der Community
  3. Open-Source / MIT-Lizenz

Kurze Faktenübersicht

  1. Sowohl kompatibel mit PHP4 als auch PHP5
  2. Unterstützung der Datenbanken MySQL, PostgreSQL und ADOdb
    Es kann zu jedem Projekt zudem eine Datenbank für die Produktion sowie eine alternative Datenbank für den Prototypen hinterlegt werden
  3. Saubere URL-Struktur bereits integriert (domain.de/controller/action/parameter)
    Eigene URL-Layouts können über die Routes-Config angepasst werden
    Es können beliebig viele Parameter an die jeweilige Action übergeben werden
  4. Auch für Nicht-PHP-Profis geeignet
    Gute Einstiegstutorials / Weblogs und Screencast zu verschiedensten Themen
    Basiskenntnisse sollten jedoch vorhanden sein, ebenfalls ein Verständnis für OOP
  5. Minimale Einstiegskonfiguration, vieles läuft über „Naming Conventions“
    Naming-Conventions arbeiten automatisch über die Modelnamen
    Models werden immer im Singular angelegt z.B. User
    Controller werden im Plural angelegt z.B. Users
    View werden nach den jeweiligen Aktions angelegt, z.B. in /app/users/add.thtml
    Die zum Model gehörige Datenbank muss im Plural angelegt werden, also z.B. tbl_users
  6. Klare Strukturierung durch MVC-Prinzip (Model, View, Controller)
    Trennung von Abhängigkeiten, Programmcode und Output in strikte Ordnerstrukturen
  7. Integrierte Helper für HTML, JavaScript, Ajax, Formulare...
    Helper können bestimmte Einbindungen vereinfachen
    Bilder können somit z.B. mit einem automatisch generierten Pfad eingebunden werden
    Javascript und CSS-Dateien können ebenfalls automatisch geladen werden
    Flash-Messages können für kurze Statusberichte schnell und einfach genutzt werden
  8. Validierungs-Modul zur automatischen Datenprüfung
    Im Model können direkt Regeln für die einzelnen Datenfelder hinterlegt werden
    Wird in einem abgesendeten Formular eine der Regeln verletzt, so bricht dieses automatisch ab und kann eine Fehlermeldung hervorrufen.
  9. Scaffolding
    Verspricht kurze Arbeitszeiten bis zum ersten Prototypen
    erstellt aus den aktuellen Datenbankfeldern vorgefertigte Actions bzw. Formulare für Add, Edit, List und Delete.
    Sollte wirklich nur bei der Erstellung eines ersten Prototypen verwendet werden, da individuelle Layouts für die Actions mit Scaffolding nicht erstellt werden können.
  10. Eingebauter Caching-Komponente zum beschleunigen der Applikation
    Vom Interpreter geparste Views können automatisch für einen angegebenen Zeitraum (z.B. eine Stunde) auf dem Server gecached werden, um somit die Rechenzeiten zu verkürzen.
    Sollten während des Zeitraums Änderungen an der Datenbanktabelle gemacht werden, so wird der Cache automatisch aktualisiert
    Einzelne Objekte die Ständig auf dem aktuellen Stand bleiben müssen können durch vom Cache ausgeschlossen werden
  11. eingebautes Filtern von durch Formulare eingespeisten Schadcode
    Cross Side Scripting wird in vielen Fällen schon durch den Cake-Core herausgefiltert
    Möchte man auf Nummer sicher gehen kann man auf die Sanitize-Klasse zurückgreifen um schadhaften Code aus einem String zu entfernen.
  12. Benötigt werden: LAMP bzw. WAMP-Umgebung, Erfahrung in OOP von Vorteil, lernt man jedoch spätestens während der Nutzung meist eh sehr schnell, mod_rewrite-Modul wenn saubere URLs benötigt werden, ist jedoch kein Muss

Die MVC-Architektur

Model

  1. Regelt automatisch mögliche Abhängigkeiten zwischen den Tabellen (z.B. über benötigte Join-Abfragen)
  2. Stellt Methoden zur Datenverarbeitung aus der Datenbank bereit
    Beispiel:
    $this->User->findByName($alias) = Select * from users where name = '$alias';
  3. Ist für die Validierung des Datenmaterials verantwortlich

Controller

Regelt die einzelnen Actions und das Verhalten des jeweiligen Models.
Beispiel:
Model|User (Singular)
Controller|Users (Plural)
Actions|add, edit, delete, login, logout

Würde man nun in einer Cake-Applikation einen User editieren wollen, so würde die Standard-URL dafür wie folgt lauten:
http://www.domain.de/users/edit/macx

View

  1. Ist zuständig für alle Ausgaben an den Browser. Hier können auch unterschiedliche Templates und Seitenvorlagen definiert werden.
  2. Wiederkehrende Bereiche wie Infoboxen können unter den so genannten „Elements“ abgelegt um mit variablem Inhalt gefüllt werden.
  3. In der View-Ebene hat man zudem Zugriff auf die angesprochenen Helper.

Beispiel:
$html->input('User/name',array('size'=>'40'));

Dieser Code würde automatisch ein Inputfeld zum Datenfeld „Name“ in der Tabelle „users“ bereitstellen.

Christian ist selbständiger Webdesigner und lebt in Magdeburg. Seine Firmenwebseite findet ihr unter xulu.net und seinen privaten Blog unter hackthenet.de. Beeindruckt hat Christian unter anderen durch diese jQuery-Demo

Fußnoten

  1. Link entfernt, da nicht mehr erreichbar ↩ a ↩ b

Erwähnungen 4

Kommentare 42

  • Hallo David,

    mal wieder ein sehr interessanter Podcast! :)
    Du hast im Podcast ein javaScript-Framework erwähnt. Wie schreibt man das denn? Unter jcrail und jkrail hab ich nichts gefunden.

    Viele Grüße, Sebastian

  • @Sebastian: Er meint jQuery (-> http://jquery.com && http://www.visualjquery.com ), eine genial einfach zu bedienende Lib die ich auch schon in bestimmt 15 Projekten eingesetzt habe. Damit arbeitet es sich wirklich sehr schön und vor Allem - meiner Meinung nach - direkter als mit Prototype etc.

    @macx und Christian: Danke für den Beitrag, freut mich mal wieder von einem recht innovativen Projekt zu hören. MODx als CMS der Wahl und nun vielleicht CakePHP als Framework für die reinen Eigenentwicklung - freuen würde es mich auf jeden Fall. Ich bin gespannt :-)

  • Nochmal danke an David für die Einladung, die Aufnahme hat echt Spaß gemacht.

    Was CakePHP angeht, so kann ich jedem PHP-Entwickler nur dazu raten, zumindest einmal einen Blick darauf zu werfen, es lohnt sich wirklich.

    Es war schwer sich in den 50 Minuten Gespräch auf das wesentlichste zu beschränken, einfach weil Cake soooooo viele tolle Features hat, dass man teilweise ganz vergisst was für den Einsteiger denn eigentlich am wichtigsten ist.

    Ich kann jedoch behaupten, das die Einarbeitungszeit wirklich kurz ist, mir viel das Entwickeln nach ca. 4 Tagen schon merklich leichter. Damit ihr bei Problemen schnelle Hilfe bekommt würde ich euch wirklich den off. IRC-Channel ans Herz legen, die Leute da stehen einem fast immer mit Rat und Tat zu Seite.

    Beim anhören ist mir gerade noch mein "Genau, Genau" doch ziemlich aufgefallen, man möge es mir verzeihen ;)

  • Ist mir nicht aufgefallen. Was hoffentlich nicht sonderlich auffällt ist die Mono-Kondierung dieser Ausgabe. Die Dateigröße ist schon merklich kleiner geworden, aber schauen wir mal.

  • Hat nur mein iPod (nano, 2. Generation) mit der Datei Probleme und springt nach den ersten ca. 5 Sekunden in das Hauptmenü zurück und stoppt. Erneutes Herunterladen hat nichts gebracht. Hängt das mit der Mono-Codierung zusammen? (In iTunes funktioniert das Abspielen wie gewöhnlich.)

Weitere 37 Kommentare anzeigen
  • Klasse Podcast, bin schon seit ner Zeit am Überlegen, mir ein Framework anzusehen, und CakePHP hört sich ja offenbar recht gut an :)
    Zu Musik Pro & Contra: Ich persönlich höre Technikwürze wegen der Infos und nicht wegen der Musik, ich könnte es also verschmerzen wenn keine Musik mehr am Schluss kommt.

  • Ist das eigentlich Absicht, dass die Download-Links statt zu MP3-Dateien alle zu audioads.de führen??? Ist das nicht ein bisschen zu viel der Werbung?
    Solange das so bleibt und die MP3s nicht wieder zugänglich werden, werde ich auf Technikwürze lieber verzichten.

  • Also bei mir verweisen die Downloadlinks alle auf mp3-Dateien, keine Ahnung wo du das siehst.

  • Also bei mir sieht das zunächst auch so aus, solange ich mit der Maus über einen MP3-Link fahre, aber wenn ich draufklicke scheint ein serverseitiger Redirect auf www.audioads.de zu greifen.
    Das ganze in FF 2.0.0.4 unter Windows.

  • Nachtrag: In IE7 und Opera 9.21 gehen die MP3-Links, in FF 2.0.0.4 aber nicht!

    • @Stefan: Ich selbst finde nirgends Werbung für Audioads, und zunächst zeigen die Links alle direkt auf diese Webseite. Bei Audioads hosten wir vereinzelnd unsere Folgen, das ist also alles richtig. Dennoch: Für den Inhalt ist das doch absolut unrelevant, oder findest du nicht?
      Klappt der Download der MP3-Datei dieses Mal gar nicht?

  • Also ich hör mir i.d.R. die Musik auch nicht an, gerade nach den langen Folgen brauche ich das nicht.

    Die Audioqualität dieser Sendung war sehr gut, inhaltlich sowieso. Habe nichts vermisst und würde eine TW auch ohne Musik am Ende hören.

  • Mal wieder ein schöner Podcast :)

    Wenn man noch mehr Zeit sparen will, empfehle ich noch einen guten Editor :) Wie z.B. VS.Php ( http://vsphp.de ) da wird sogar gerade überlegt cakePHP als Framework hinzuzufügen. Natürlich kann man auch wie ich sein eigenes Framework hinzufügen und kriegt super Intellisense was nach 5 Minuten nicht mehr weckzudenken ist :D

  • Hallo @lle,

    mal wieder ein super Podcast! So was wie "CakePHP" hatte ich gesucht?

    Leider bekomme ich die Installation auf meinen Server nicht hin :-(

    Bis Bald

    Mark

    • @Mark: Woran haperts denn? Installieren musst du eigentlich nicht wirklich etwas, du musst ihm nur sagen welche Datenbank er für deine App nutzen soll, den Rest sagt dir Cake dann eigentlich voll automatisch.

      Wenn du Probleme hast, dann schau doch in das Cake-Blog Tutorial oder komm in den IRC-Channel, die wissen einem immer zu helfen :)

  • Kann es sein, dass der iPod mit Mono nicht zurecht kommt? Oder kann es daran nicht liegen, dass Technikwuerze zum ersten Mal nicht auf meinem iPod läuft?

  • Auf meinem iPod Video 5.5G habe ich keine Probleme. Evtl. liegts an der Werbung - hörst du die?
    Versuch doch mal die Werbung zu überspringen, evtl. gehts dann?

    Zur Folge:
    Sehr schöne Folge, bitte mehr davon. Themenvorschläge: JavaScript-Frameworks, ein Ausblick auf Ruby on Rails, Zope, o.A.

  • Hallo David, hallo Christian, hallo alle.

    1. Zur Folge:
      Super Sendung, super Thema und DICKES LOB AN CHRISTIAN. Im Gegensatz zu den (für mich als Leiter einer kleinen Agentur mit Schwerpunkten bei Barrierefreiheit und TYPO3) wenig nützlichen Beiträgen von Sascha Poster (und Daniel) kann ich mir eine Folge mit Christian gern mehrmals anhören. Ich glaube es gab in der Sendung keine Nennung von alternativen Frameworks - das hätte ich mir evtl. noch gewünscht.

    2. Zum Audioformat:
      Mono reicht mir völlig, ich lad die Sendungen mir mit nem' Nokia 95 die direkt aus dem Internet und hör sie morgens im Auto. Auch Musik brauch ich nicht, die wird beim weiterspulen im Berufsverkehr immer zum Sicherheitsrisiko.

    Wenn ich Entertainment will hör' ich Radio, wenn ich relevante Informationen sehr gut aufbereitet möchte hör ich Deinen Podcast.

    1. Sonstiges:
      Falls Du mal Unterstützung wie etwa Rückfragen inhaltlicher Natur oder auch durch die Stellung eines Gesprächspartners für eine Sendung brauchst, stehn' wir mit unserem KnowHow (http://www.kamedia.de) gern zur Verfügung. So könne wir vielleicht die Qualität und das Weiterleben Deiner Sendung etwas unterstützen.
  • Oh - das Foto (oben) ist etwas groß geraten - weiß ich eigentlich was ein "DAU" ist?

  • Super interessante Thematik, CakePHP werde ich auf jeden Fall in nächster Zeit mal testen.

    Zu Zeiten der Breitband-Flatrate ist mir die Dateigröße herzlich egal, natürlich präferiere ich daher Stereo-Qualität. Musik brauche ich in einem solchen spezialisierten Technik-Podcast nicht, denn dafür gibt es Musik-Podcasts.

  • Dann scheint es also nicht an der Kodierung zu liegen. Danke.

  • Ja, dann will ich mich doch auch mal zum Thema MONO oder STEREO mitteilen. Also die aktuelle Ausgabe in MONO war völlig okay und da ich, wie auch wohl einige andere, die Musikauswahl eh nicht so klasse finden (man kann es ja auch nicht jedem Recht machen), sollte man diese dann doch weglassen und dann reicht MONO doch völlig aus. Außerdem wird's dann für den macx ein wenig günstiger, nehme ich mal an.
    Was mich aber wirklich nervt, sorry, ist dieses äußerst laute Gitarrensolo o.ä. am Anfang jeder Folge. Zum Einen viel zu laut im Gegensatzt zum Interview und dann auch nicht mein Geschmack, das ist dann aber sekundär.

  • Boah, krass, dass keiner die Musik behalten will, wenn ich das mal so in den Kommentaren lese.

    Ich finde, die Musik muss bleiben, sie gehört für mich einfach dazu. Auch, wenn der Musikgeschmack auch nicht immer meine Nerven trifft, höre ich sie mir gerne an.
    Denn nach einem hochspezialisierten Podcast lockert sie einfach auf. Zudem kann jeder, der sie nicht gut findet, doch einfach weiterhüpfen.
    Ich persönlich würde sogar einen Schritt weiter gehen und die Musik zum Auflockern an passender Stelle mitten im Podcast ansiedeln. Ganz mutig, so wie "Filme und so" das eine ganze Weile hatten.

    David, wenn Du allerdins dazu tendieren solltest, die Musik am Ende wegzulassen, dann rationalisiere bitte auf gar keinen Fall unter keinen Umständen das absolut geile schmissige Intro!!!
    Btw: Woher ist das eigentlich???

  • Das Intro von Technikwürze ist das Markenzeichen - seit der ersten Folge. Und für den Videopodcast basteln die Jungs von cre8ings eine richtig geile Videovariante. Nein, das Intro bleibt natürlich.
    Nähre Informationen über den Song gibt es hier.

  • Ich wäre ja auch dafür, die Musik zu behalten, aber ich sehe schon, dass die Mehrheit dagegen ist - schade eigentlich.

  • Liebes Team von technikwürze,

    erst seit kurzem höre ich euren Podcast (bin über den Werbeblogger Podcast auf euch gekommen). Kompliment: ihr macht das wirklich klasse, sehr interessant und professionell aufgezogen!

    Auch wenn ich derzeit in Deutschland zu Besuch bin, so höre ich normalerweise den Podcast in meiner Heimat in Kolumbien... Dort geht der Download nicht ganz so schnell von der Hand. Von daher wäre ich sehr dankbar, wenn der Podcast nur mono wäre, vielleicht könnte man sogar die Bitfrequenz niedriger einstellen. Audiobooks benötigen für eine Stunde meist nu 10 MB, während es bei Podcasts leider 50 MB sind, den Klangunterschied höre ich zumindest kaum...

    Viele Grüße,

    Andre

  • Markus Delbrouck
    Markus Delbrouck

    Interessanter Podcast (-:
    Heute einmal sehr technisch. Mögliche Alternativen zu CakePHP:

    Prado: http://www.xisc.com/
    Qcodo: http://qcodo.com/
    Seagull: http://seagull.phpkitchen.com/

  • Sehr schöne Folge! Bin nur durch Zufall darauf gestossen, da mein iTunes-Abo leider schon seit der Folge 60 ruht - ich finde nie so richtig Zeit , um eine Stunde Podcast zu hören, aber das sollte ich mal wieder ändern...

    CakePHP kann ich auch nur empfehlen. Habe auch schon mehrere Projekte damit umgesetzt, von kleinen Seiten bis hin zu SOAP-Transaktionsservern. Cake kann einen wirklich bei fast jedem Projekt gut unterstützen.
    Mit der aktuellen Entwicklung der 1.2-Version ist auch endlich das letzte Manko beseitigt: Fehlendes l10n und i18n.

    Kurz und Knapp zur Musik: Weglassen.

  • Ich bin heute eendlich dazu gekommen diesen Podcast zu hören und bin echt begeistert. Mal wieder volle Ladung Informationen. Macht gleich Lust auf cakePHP selber mal auszuprobieren! :)

    Good Job!

  • Also bei mono habe ich nichts vermisst.
    Mir ist aber grundsätzlich die Dateigrösse egal, kann also auch gross sein..
    Stereo und gute Bittrate finde ich zum hören langer Podcasts angenehmer weil mir sonst die Ohren sausen vom Rauschen usw..

  • Ich muss mal ein bisschen rumtrollen und Besserwissen. Was mir in den letzten Episoden Technikwürze aufgefallen ist:

    • Es heißt Storyboard und nicht Storybord
    • Es heißt Steckenpferd und nicht Streckenpferd
    • Es heißt [Rubi on Räils] und nicht [Rabbi on Räils]
    • Es heißt [Käsch] und nicht [Käidsch]
    • Es heißt [Fietscher] und nicht [Fjutscher] (http://www.dict.cc/?s=feature)

    Es mag pedantisch klngen, aber der wahre Profi muss auch solche Details beachten, bitte!

    Ach ja, keine Musik für mich - ich will Infos :-)

  • Ich setze mich selbst auf ein Nagelbrett und werde alle Gäste knebeln, die aus der Reihe tanzen. ;-)

  • Mich würde interessieren, ob man bei CakePHP immer alles selbst programmieren muss, oder ob es schon fertige Komponenten wie Foren, Kalender usw. gibt.

  • Gerrit Klugscheißen möchte ich hinzufügen:
    Scriptaculous = Skriptäckjuluhs ;-)

  • Ich habe den Podcast heute beim Joggen gehört. Der Unterhaltungswert ist durchaus hoch, inhaltlich ist das fahrlässig. Ich habe nicht gezählt, aber der Beitrag hat mindesten 20 inhaltliche Fehler.

    Der interviewte "Experte" ist eigentlich "Webdesigner" und nur Nebenbei-PHP-Programmierer und hat gerade mal ein einziges Projekt mit CakePHP zu laufen. Das ist so, als wenn man jemanden, der zum ersten mal 3 km gejoggt ist, als Marathon-Experte interviewt. Gut gemeint, aber schon im Ansatz zum Scheitern verurteilt.

    CakePHP ist keinesfalls für Anfänger geeignet - zumindest dann nicht, wenn man deutlich mehr als CRUD braucht. CakePHP ist sehr mächtig. Aber es ist sehr strikt und die Dokumentation ist unvollständig. CodeIgniter wäre für Anfänger deutlich empfehlenswerter. CakePHP hat auch einen recht großen Overhead und läuft deshalb mitnichten in jedem Webspace. Die im Beitrag gelobte Validierung von CakePHP ist bisher eine der größten Schwächen von CakePHP und wird erst mit der neuen version 1.2 (aktuell Alpha) behoben.

    Ich gucke jetzt mal, wie man If-Schleifen baut... und versuche etwas über Enteities und Kehtsch zu erfahren.

    Oje.

  • Ich habe es befürchtet: Die absolute Todsünde begeht Ihr natürlich auch: Kritische Kommentare werden kommentarlos gelöscht.

    Damit verliert Ihr jegliche Glaubürdigkeit. Wenn Ihr nicht kritikfähig seid und hier zensiert, dann gibt es die Kritik über diesen leider dilettantischen Podcast zu CakePHP eben noch ausführlicher an anderer Stelle.

  • Oh je. Das muss ich sagen, wenn ich sehe, dass uns jemand uns "dilettantisch" nennt, nach mehr als 85 völlig kostenlosen Folgen. Deinen Kommentar, und das hatte ich dir bereits in einer E-Mail beschrieben, ist nicht gelöscht worden. Vielmehr habe ich Technikwürze gestern auf einen neuen Server umgezogen, was du an den IP-Adressen erkennen kannst. Deinen Kommentar habe ich nun hier nachgetragen, die Datenbanken auf den gleichen Stand gebracht.

  • Die Kritik bezüglich gelöschter Kommentare nehme ich dann selbstverständlich zurück. Das gerade ein Serverumzug stattfand, konnte ich freilich nicht wissen. Das wurde nirgends kommuniziert. Den Server mit einem TTL von 86400 für den A-Record umzuzuziehen, spricht übrigens auch für sich. Da ergibt sich eben zwangsweise eine 24-Stunden-Lotterie.

    Um die Kritik noch etwas zu differnzieren: Diese Website und der Podcast sind durchaus professionell aufgemacht. Unprofessionell war es, jemanden zum Thema CakePHP zu interviewen, der laut seiner eigenen Darstellung weder ein wirklicher Experte für PHP noch für CakePHP ist. Der Podcast hat dann zwangsweise die erwartbare inhaltliche Qualität.

    Wenn man jemanden zum Thema CakePHP interviewen will, dann vielleicht vorzugsweise jemanden, der sich wirklich damit auskennt. Im deutschsprachigen Raum empfehlen sich dafür u.a. Daniel Hofstetter und Felix Geisendörfer. Beide programmieren aktiv an CakePHP mit.

  • Danke für deine Hinweise. Ich habe mir eben den Podcast noch einmal angehört und weder hier noch im Podcast selbst haben wir von einem Experten gesprochen. Wichtig finde ich aber auch, dass wir unsere Hörer selbst interviewen, und uns anhören, was sie denn alles mit Webseiten anstellen. Das zeigt unterschiedliche Betrachtungsweisen auf und verhindert eine "Elite-Monokultur", die ich persönlich ablehne. Denn auch für die "Vollprofis" gilt: Es wird immer wieder jemanden geben, der das besser oder smarter lösen kann.

  • Richtig, ich habe nie behauptet experte zu sein. Zudem sollte diese Folge lediglich zum kurzen Einstieg dienen, eben gerade für Leute die keine PHP-Profis sind, denn die werden von Cake sicherlich bereits mehr als einmal gehört haben.

    Inhaltliche Fehler? Und die Validation sei murks? Die Fehler würden mich jetzt persönlich doch stark interessieren, denn ich erzähle ungern Blödsinn :)

    Und nein, man muss kein Profi sein um CakePHP anwenden zu können, denn sonst hätte man sich nicht das Blog-Tutorial einfallen lassen, denn das richtet sich ja gerade an Anfänger. Klar, wer die Grundlagen nicht kennt sollte nicht gleich mit Cake einsteigen.

    Auf der CakePHP-Seite heißt es zudem: "Our primary goal is to provide a structured framework that enables PHP users at ALL levels to rapidly develop robust web applications".

    Ich denke es wäre ganz gut wenn die Profis nicht immer jedes einzelne Wort auf die Goldwaage legen würden, gerade dann wenn es nur um eine kurze Vorstellung geht und nicht um direkte Praxisbeispiele.

Kommentar hinterlassen

Mit dem Absenden stimmst du zu, dass deine eingegebenen Daten gespeichert und als Kommentar veröffentlicht werden dürfen (weitere Infos in der Datenschutzerklärung). Dein Beitrag spiegelt deine persönliche Meinung wider – bitte behandle andere respektvoll und halte dich an geltendes Recht. Rechtswidrige Inhalte behalten wir uns vor zu entfernen.