PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Archiv für PHP 5

Silverstripe: ein neues Open Source CMS

Silverstripe - PHP Magazin - CoverDurch einen Artikel im PHP Magazin bin ich auf ein (neues) Content Management System aufmerksam geworden: Silverstripe. Noch relativ unbekannt hat es letztes Jahr am Google Summer of Code (SOC 2007) teilgenommen: Einem “Stipendium” für herausragende Projekte. Gewinnen können die Teilnehmer eine dotierte Summe, wenn Sie sich an eine Timeline und entsprechende Milestones halten, die sie sich selbst setzen.

Silverstripe setzt auf einem eigenen Framework und konsequent auf das MVC Pattern. Für die übersichtliche Admin-Oberfläche gibt es unter anderem ein deutsches Language-Pack, das die Arbeit damit natürlich sehr erleichtert.

Dank eines schicken Installers ist es schnell auf dem Webserver installiert - Datenbank und CMS-Konfiguration werden über einen Installer Assistenten automatisch generiert. “Weniger ist mehr” ist bei diesem CMS Programm. Interessant ist, das es trotzdem gelungen ist, eine hohe Anpassungsfähigkeit und Flexibilität in Bezug auf eigene Module und Oberflächen zu integrieren.

Wer einen gelungen Einstieg und Überblick über Silverstripe haben möchte, sollte auf jeden Fall mal einen Blick auf das aktuelle PHP Magazin werfen. Ein kleiner Workshop zeigt die Integration einer eigenen Produktpalette. Ein prima Idee, die praxisnah den Einsatz von Silverstripe aufzeigt.

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Viele schöne neue Sachen :)

Diese Woche ist wieder einiges passiert. Für Euch im Überblick:

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Abstraktes HTML mit HAML

Haml LogoNein. Es ist kein Hase, es ist ein Haml. Gerade über dieses erstaunliche Projekt gestolpert, muss ich es auch gleich mal bloggen. Was ist Haml? Und was macht es?

Haml ist eine Abstraktions-Auszeichnungssprache für Webfrontends, original entworfen für Ruby. Es erinnert mich an einen Mix aus CSS, Yaml und TextilePHP… Mit anderen Worten: Man beschreibt anhand strukturierter Ausdrücke den Aufbau einer HTML-Datei:

%h2 Überschrift
  %ul
    %li Eintrag 1
    %li Eintrag 2

wird zu:

<h2>Überschrift</h2>
<ul>
  <li>Eintrag 1</li>
  <li>Eintrag 2</li>
</ul>

Im Haml-Labor kann man ein bisschen mit der Syntax rumspielen. Aber Haml kann noch ein bisschen mehr. Auch logische Verzweigungen und Schleifen sind möglich.

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Eure Meinung: Sichtbarkeit von Variablen

So, nachdem ich einige Wochen unterwegs war, Timi mit dem Blog alleine gelassen habe und mal eine Runde Abstand vom programmieren hatte, komme ich zurück, aktualisiere meine PHP Installation auf die neueste Version, starte mein Projekt und: BUMM, nichts geht mehr. Meine Sessions scheinen Variablen zu verlieren, Objekte sind nicht mehr komplett, bzw. leer. Was ist da los? Habe ich mein Projekt mit einem Riesenbug stehen lassen und bin in Urlaub gefahren?

Also gut, Suche beginnt.

Session scheint ok zu sein. Nur die Objekte sind irgendwie verstümmelt. Aber der Reihe nach. Ich programmiere seit einer Weile in PHP5 und versuche auch eine sinnvolle Klassenstruktur zu wahren. Jedenfalls habe ich sowas wie die Mutter aller Objekte, von denen sich sämtliche Klassen ableiten. In diesem Objekt habe ich eine Funktion __sleep, was eine Magic Function ist, die beim schreiben in die Session von PHP aufgerufen wird, um im Objekt aufzuräumen und meine CFG Referenz, in der unter anderem DB Connection etc. liegt nicht zu serialisieren.

public function __sleep()
{
  $vars = array_keys(get_object_vars($this));
  $cfg = array_search('cfg', $vars);
  unset($vars[$cfg]);
  return $vars;
}

Nach einigen Tests fand ich dann, dass die Funktion get_object_vars nicht mehr wie vorher alle Variablen des Objektes liefert, sondern nur noch alles was public deklariert ist. Dies wird aber nicht weiter erwähnt im Changelog, genauso wenig in der Doku auf der Funktionsseite. Jedenfalls ist mein Verständnis von Objekten dahingehend, dass ich als ein Kindobjekt diese __sleep Funktion aufrufe, dass ich gefälligst alle Variablen bekommen soll, die dieses Objekt hat und nicht nur die, die vom Scope des Parent, also meiner abstrakten Klasse sichtbaren, bekomme.

Jedenfalls habe ich schön in der Bug Datenbank recherchiert, bevor ich diesen Code verschickt habe.

Nun meine Frage: Was ist für euch das erwartete Verhalten von dem verlinkten Code? Habe ich das falsch verstanden und werde jetzt brav meine ganzen Variablen alle nur als protected deklarieren, damit ich eine generelle __sleep Funktion haben kann, bzw. per Reflection meine gesetzen Klassenvariablen bekommen kann?

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP Intrusion Detection

Worf“Worf: Waffensysteme laden. Bereit? Feuer!”

Man sollte es wie Kapitän Picard machen: Bevor man wild auf alles feuert, was eine Applikation an Benutzereingaben geliefert bekommt, erstmal gründlich sondieren. Eine gehärtete Applikation ist wichtig - die meisten Entwickler nehmen dieses Thema leider immer noch auf die leichte Schulter. Warum? Meist ist es ein Mangel an Zeit und oft will kein Auftraggeber eine sichere Applikation bezahlen.

Spätestens bei Serverkaperung, Datendiebstahl oder Fakeinhalten in der Datenbank schreien alle um Hilfe. 3 Jungs aus Deutschland haben sich dem Thema auf einer englischsprachigen Website angenommen ;) Natürlich ist das Projekt international - es gibt ja nicht nur deutsche Problemfälle, was sichere Applikationen angeht. Köln scheint die sichereste Stadt zu sein: zumindest, was Web-Applikationen angeht…

Jetzt wissen wir schon mal, wer hinter PHP-IDS steckt - aber um was geht es bei der Feindabwehr eigentlich?

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP auf CD

Durch den Artikel “PHP Compiler” auf die Idee gebracht, hab ich nach einem schon länger bekannten Projekt gegoogelt: Server2go. Ich hab damit selbst schon 2 Projekte erfolgreich auf eine CD gepackt.

Das Produkt ist komplett kostenlos - und so kann man sehr schnell und günstig PHP-Projekte auf USB-Sticks, CDs und portable Festplatten packen. Für die Ausführung der PHP Dateien ist keine Installation notwendig. Vielmehr wird der (bereits mitgelieferte Mini-Browser) gestartet, der wieder im Hintergrund Webserver und Datenbank hochfährt - wenn benötigt wohlgemerkt.

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Nach Tigerente jetzt Tigermaus

Ein PHP-/Ajaxframework versucht die Welt zu erobern: Tigermouse! Das Framework hat einen Ansatz, der zunächst gut erscheint - via MVC (Model/View/Controller) werden Webseiten samt Javascript auf dem Server generiert und zum Client geschickt.

Die Entwickler von Tigermous stellen aber schon auf der Seite mit Vergleichen zu anderen Framworks klar: Es ist kein umfassendes Framwork für große Applikationen und möchte auch keins werden.

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP 4? PHP 5? oder doch lieber PHP 6?

Beim Spicken im Blog der Münchener PHP User Group bin ich stuzig geworden. Warum eigentlich kein PHP 5 benutzen? Ich entwickle jetzt schon seit mehreren Jahren Webapplikationen mit PHP, bin eingedeckt mit guter O’Reillys Literatur und kenne alle Vorzüge von PHP 5:

  • Autoloader
  • Geiler XML Support
  • Bessere OOP
  • Bessere DB Abstraktion
  • Schicke Iteratoren

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP Objekt Generator

POG LogoDie Jungs von POG verfolgen eine interessante Idee: Der Code von Standard Objekten sieht jedes Mal ähnlich aus und ist daher reproduzierbar. Aus der Erfahrung heraus, benötigt man immer wieder die selben Funktionen und Angaben, um Daten aus PHP nach MySQL zu schaufeln und umgekehrt.

Das naheliegenste ist natürlich ein Generator, der sauberen Code generiert. Ich hab mir mal den “künstlich” erzeugten Code angeschaut und folgendes festgestellt:

  • Der Code ist sauber strukturiert
  • Die Daten werden validiert
  • Der Code kann für PHP 4 und PHP 5 (bzw. 5.1+) generiert werden
  • Der generierte Code ist als Zip downloadbar
  • Der generierte Code ist via Copy & Paste verwendbar (Im Textarea abgebildet)
  • Im Zip wird ein DB Wrapper für PHP 4 geliefert
  • Für PHP 5.1+ kann auch die native PDO (PHP Data Objects) Klasse verwendet werden
  • Im Zip wird eine kleine Setup Routine mitgeliefert
  • Im Zip ist auch schon der MySQL Code drin

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Bröckchen für Bröckchen

phpsprocketsIch finde Template-Engines für PHP fragwürdig. Der größte Vertreter der Template-Engine-Artgenossen ist wohl Smarty. Aber ganz im Ernst: Bevor ich meine Applikationen mit einem riesen Sammelsurium an Pseudecode vollranze, baue ich lieber auf die klassische PHP Implementierung mit PHP-Tags. Das ist allemal lesbarer und performater. Ein Dorn im Auge sind mir trotzdem Mini-Snippets:

echo "<li>" . $bla. "</li>";

Kleine HTML Fetzen, die sich quer durch den kompletten Code ziehen und einfach nur scheiße aussehen. Und mit echter Objektorientierung hat das auch nix zu tun. Für solche Fälle gibts den phpsprockets HTML/XML Generator.

Den kompletten Artikel lesen »

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks
Ältere Artikel »