Datum per View Helper umwandeln

Posted on 15 August 2009 | No responses

Auf dem webaholics-Blog habe ich ein lesenswertes Tutorial über Zend View Helpers gefunden.

Ausgehend davon habe ich meinen ersten eigenen Helper geschrieben. Ziel ist es Datetime-Daten aus der MySQL-Datenbank umzuwandeln:

<?

//converts mysql datetime to a different date form

class Angels_Date_Helper_ToTimeAndDate //extends Zend_View_Helper_Abstract
{

	public function toTimeAndDate ($datetime)
	{
		$date = new Zend_Date();
        $date->;set($datetime); 

        return $date->get('H:mm, FFF');
	}
}

Wenn der Helper-Pfad in der Bootstrap richtig eingestellt ist kann der Helper easy im View aufgerufen werden:

   echo $this->toTimeAndDate($user['user_date']);

Stichwort Refaktorierung

Posted on 10 August 2009 | No responses

In meinem Blog-Eintrag weiter unten habe ich über meine Lernfortschritte und dem Zend Framework geschrieben. Im Zusammenhang habe ich das Buch von Ralf Eggert wegen der Unübersichtlichkeit und dem fehlenden “Roten Faden” stark kritisiert. Jetzt habe ich das Buch zu Ende gelesen und muss eine Sache gutheißen: Eines der letzteren Kapitel behandelt die Refaktorisierung von Anweundungen.  Ein Klick auf Wikipedia verrät folgendes dazu:

Refactoring (deutsch auch Refaktorisierung, Refaktorierung, Restrukturierung oder schlicht Umgestaltung) bezeichnet in der Software-Entwicklung die manuelle oder automatisierte Strukturverbesserung von Programm-Quelltexten unter Beibehaltung des beobachtbaren Programm-Verhaltens. Dabei sollen die Lesbarkeit, Verständlichkeit, Wartbarkeit und Erweiterbarkeit verbessert werden, mit dem Ziel, den jeweiligen Aufwand für Fehleranalyse und funktionale Erweiterungen deutlich zu senken.

In der Praxis bedeutet das über ein bestehendes Projekt aus ineinander verwobenen Programmdateien ein Framework und eine  Struktur aufzusetzen. Ein Projekt sozusagen auf die Model-View-Controller-Gleise zu bringen. Von da an redet man dann von einer Anwendung bzw. Application.

Refaktorierung ist m.E. die beste Methode zum Erlernen eines Frameworks, Engines, Programmiersprache oder der Objektorientierten Programmierung. Mir hat es ermöglicht innerhalb von drei Jahren PHP/HTML/CSS > OOP/Smarty/Design Patterns -> MVC/Zend Framework zu lernen. Alles an Hand eines eigenen Kommentar-Tools das ich jedes Jahr neu “refaktoriert” habe. Eigentlich sollte man ein komplettes Buch darüber schreiben das sich nur mit Refactoring befasst.

Read more

Google blog search

Posted on 3 August 2009 | No responses

Google Blog-SucheDie Blog Suche greift auf RSS-Feeds und damit Feed-relevanten Inhalten zu: Foren, News und natürlich von Blogs. Somit sind die Suchergebnisse hochaktuell und können zeitlich eingegrenzt werden. Das Besondere an dem Dienst ist die RSS-Reader Funktion, dadurch habe ich die Möglichkeit die neuesten Artikel über PHP aus dem Google-Blog-Universum zu lesen.

Hier können sich Blogbetreiber für die Suche eintragen.

Zend Klassen in der eigenen Library erweitern

Posted on 3 August 2009 | No responses

Ich war für ein Paar Tage in Augsburg, wieder zurück in München möchte ich einen weiteren Blog-Eintrag schreiben um meine Lernfortschritte mit dem Zend-Framwerok etwas zu dokumentieren.

Die professionelle Arbeit mit dem Framework ist nicht nur die Nutzung einer Palette von Werkzeugen, sie bieten darüberhinaus die Möglichkeit eine eigene parallele Klassen-Bibliothek zusammenzustellen und mit Ihr von Projekt zu Projekt heranzureifen.

Anhand eines Beispiels will ich den Einsatz einer Validierungs-Klasse demonstrieren: User-Namen die zum Einloggen verwendet werden dürfen keine Sonderzeichen enthalten. Zu diesen Zweck gibt es die Zend_Validate_Alnum-Class welche nachprüft ob Buchstaben und Zahlen enthält. Einpaar Satzzeichen sollen aber erlaubt sein wie z.B. Apostrophe und Umlaute.

Die Datei ist als /library/Enlogger/Validate/Nickname.php gespeichert und implepentiert Zend_Validate_Abstract – Abstract heißt dass die Klasse nur zum vererben ist. Leider fehlt Framework-Tutorials generell ein gewisser Tiefgang ins objektorientierte Programmieren).

<?php

class Angels_Validate_Nickname extends Zend_Validate_Abstract {

    public function isValid ($value)
    {
        $notallowed = array ('!','"','$','&','/','(',')','=','?','[',']','\\','<','>;',',',';',':','+','*','\'','{','}');

        $result = preg_split('/[A-Za-z_0-9-ßöäü]*/', $value);
        foreach ($result as $res) {
            if ($res) return false;
        }

        return true;
    }

    public static function is ($value) {
        return self::isValid ($value);
    }
}

Gecheckt wird der Wert durch einen Regex-Ausdruck. Der standardmäßige Aufruf sähe so aus:

    $user_name = "Joe_Römer";
    $nameValidator = new Angels_Validate_Nickname;
    $formal = $nameValidator->isValid($user_name);

Mit einer zusätzlichen statischen Funktion wird die Validierung durchgeführt. Die Klasse muss nicht erst umständlich Initialisiert werden, Außerdem müssen wir prüfen ob die Variabel lang und breit genug ist:

    if (!Zend_Validate::is($user_name, 'StringLength', array(3,18)))
        $error_msg = 'The name should have a length between 3 and 18 characters';

    elseif (!Angels_Validate_Nickname::is($user_name))
        $error_msg = 'The given name contains any unalowed characters';

Manch Leser fragt sich warum die Validate-Klasse eine Extension von Zend_Validate sein muss. Ja funktionieren würde das auch so (zumindest in diesem Beispiel) aber die Library-Klassen sind ausgeklügelter: Über Zend_Validate lassen sich unter anderm Error-Messages aufsetzen oder mehrere Validatoren zu einem Funktionsaufruf “stapeln”.

Linguee.de – Das Web-Wörterbuch

Posted on 23 Juli 2009 | No responses

Ein cooles Konzept: Linguee.de – eine englisch-deutsche Wörterbuchsuchmaschine.

Der ewige Anfänger ist umgezogen

Posted on 22 Juli 2009 | No responses

Zumindest im Web, nein, zumindest mein Blog. Die neue URL zum speisen euerer Feed-Reader heißt: enlogger.com

Anbei – den im eigenen Keller sucht sich’s bekanntlich leichter – der Inhalt meiner .htaccess Damit das Funktioniert muss die Indexes-Option an sein. RewriteRule beinhaltet ein kleines Regex-Script das sorgt dafür das alles was von dort kommt nach enlogger.com umtransportiert wird. Das [R] dahinter steht für right, damit die rechte Url in der Browser-Leiste angezeigt bleibt bei [L] dann die Linke bzw. eingegebene.

RewriteEngine On
RewriteBase /

RewriteRule (.*) http://enlogger.com/$1 [R]

Das Zend Framework lernen

Posted on 22 Juli 2009 | No responses

zend-frameworkProlog: Nein, man sollte nicht versuchen Giraffen im Zoo zu füttern! Im Krankenhaus meinte die Ärztin nach sorgfältigem gutachten der Röntgenbilder das der Sommer gelaufen sei: Riss im Sprunggelenk. Nun liege ich seit zwei Wochen vergibst zuhause rum. Mach das Beste draus denke ich mir, das ne menge guter Bücher und Drehbücher sind so entstanden (Ausgebrannt, Disturbia, Planet Terror, Der Rasenmähermann…). Also habe ich mir vorgenommen endlich das Model View Controller Konzept zu verstehen und meine Wahl fiel auf das Zend Framework.

Warum Zend? Es gibt sicherlich bessere, simplere, jungere, frischere und kanagigere. Das PHP Zend Framework (ZF) ist in der Hinsicht vergleichbar mit dem Prototype Konzept für JavaScript: Ein Vorreiter und Klassiker, und Klassiker haben so deren Vor- und Nachteile. ZF war Ursprünglich nicht als MVC-Framework gedacht, eher als eine Ansammlung von (Hilfs-)Klassen, letzteres wurde nach und nach implementiert. Somit hat der Programmierer seinen Freiraum und kann sich sein Packett nach belieben heraussuchen, erweitern und zusammenstellen.

Die beliebtesten und nützlichsten sind: Zend_Auth – automatisiert Registrierungen und anmeldungen der User; Zend_Acl erweitert Zend_Auth mit der Vergabe von Rollen (Admin, Editor, Subscriber…); Zend_Config ermöglicht Einstellungen mit Hilfe einer Ini-Datei; mit Zend_Loader erspart man sich die ewigen include Eingaben und weitere selbstärklärende Packs wie Zend_Feed, Zend_Search, Zend_Validation, Zand_Captcha u.w. Übrigens sind Controller- und View-Komponenten (und dessen Erweiterung für das zusammenstellen kompletter Seiten das Zend_Layout) nicht zwingend zusammen zu bringen. Zend_Controller, Zend_View und Zend_Model können unabhängig voneinander genutzt werden. Für größere Projekte, v.a. Communities, macht das Zusammenwirken natürlich Sinn.

Wieso “Hallo World”? Unter http://framework.zend.com/docs/screencasts gibt es ein gutes Tutorial für Zend-Newbies. Die QuickStart Artikel sind allerdings ungeeignet. Das Tutorial zeigt einem wie man seine Projekt-Struktur eigenhändig zusammenstellt – und man steht nicht plötzlich vor hundert Ordnern und weiß nicht wohin damit. Im zweiten Teil wird das Zusammenspiel der Komponenten verdeutlicht und man bekommt eine gute Vorlage für die weiteren (Lern-)Projekte.

Ein ausfürliches “im Blog” Tutorial im Blog von Pádraic Brady’s geht es auf über 10 Kapitel über alle möglichen Aspekte des Erschaffens einer Web-Applikation. Nebenbei wird hier das CSS-Framework Blueprint eingesetzt und erläutert, sowie das HTML-Filter-Ungetüm HMTLPurifer. Nur, worauf ich mich gefreut hatte (habe immerhin einpaar Tage mit Brady’s Sichtweise der Welt der Dinge verbracht ;) ) die versprochenen Kapitel über PHPUnit und etwas mehr Einblick in Subversion haben gefehlt. Dafür entlohnt Brady einen mit der Programmierung (oder erstmal mit den Einsichten darin) von Helpern, Plugins, das Zusammenstellen einer eigenen Library und den Umgang mit Zend_Db. Außerdem, bei der Sprachfluktuation der Irländers und mit einem Duden bewaffnet, hat es mein Englisch aufgebessert. Die Links zu den Kapitel gibt es auf hier im ZFBlog-Post.

So nun heißt es durchhalten: Denn ich konnte noch nicht mal richtig stehen (und das wortwörtlich), ohne mich ständig auf irgend welche Manuals, Referenzen und Vergoogleungen festhalten zu müssen. Zudem ist das offizielle Zend-Manual schlecht und auch wenn umfangreich geht viel zu schnell in die Tiefe und lässt der Praxis zu wenig Spielraum. Die Beispiele sind eintönig und mangelhaft erklärt. (Das gilt übrigens auch fürs Prototype api – nennen die das api?)

Schlag doch mal ein Buch auf! Ich habe mir das “Zend Framework – Von den Grundlagen bis zu fertigen Anwendung” von Ralf Eggert bestellt und vielleicht habe ich mich von dem hübschen Cover und der vier-Sterne-Bewertung einlullen lassen (Erinert mich bitte daran dem Buch zwei Sterne zu geben nach dem ich es zu ende gelesen hab). Vielleicht war ich zu sehr Pádraic Brady-verwöhnt. Naja jetzt ist das Buch da und was muss das muss… Beim Lesen fällt auf das Eggert dem ZF gegenüber fanatische Züge entwickelt hat, unkritisch wird alles Betrachtet was von Zend kommt. Die Beispiele sind schlecht und unvollständig. Spiralenhaft erklärt der Autor die vielen Möglichkeiten Sidebar-Widgets einzubinden (über Zend_View, View_Helpern, Partial_Helpern, Zend_Layout)  aber nie wird ein Beispiel vollständig ausgeführt, nur selten kommt ein Aha-2+2+2+2+2+Erlebnis zu Stande!  Zu viel prophylaktische Theorie, außerdem drehen sich alle (!) Beispiele um die Homepage vom Luigi und Mama Pizza – aber warum nicht auch mal um Coke Zero?

Alles in Allem macht Zend Spaß, und es gibt endlich wieder was zu Entdecken. Objektorientierte Programmierung wird hier konsequent weitergedacht – oder genauer – hier fängt sie erst richtig an. Wer sich damit beschäftigen will sollte vorher zumindest ausgiebig mit Smarty oder einer ähnlichen Template-Driven-Engine gearbeitet haben, welches sich immer noch Lichtjahre hinter einem MVC Framework befindet.

Zu guter Letzt möchte ich ein kleines Beispiel einer Datenbanken-Query präsentieren und hoffe dass dies Neugierieg einstimmt.

$q = $this->select()
 ->from($this, array('entry_id','entry_text','entry_date'))
 ->join('users', 'entry_user_id = user_id', array('user_name'))
 ->where('entry_log_id = ?', $log_id)
 ->order('entry_id DESC')
 ->limit($max);

You can all start using HTML 5 today

Posted on 20 Juli 2009 | No responses

says the HTML5 Doctor auf html5doctor.com. Also habe ich mich kurzerhand entschlossen das endlich mal auszuprobieren. Und tatsächlich wer’s einmal verwendet hat möcht’s nicht mehr missen! Jetzt wird mir auch bewusst was für ein Umstand und Code-Gewusel “das gute alte” HTML 4.01 doch war…

Neu sind Tags wie header, footer, nav und section - direktive Standards welche sich über die Jahre im roll-up-roll-up Web Design so entwickelt haben. Kompliziert ist HMTL5, Artikel-weise erklärt der HTML5-Doctor-Stab wie sie richtig eingesetzt werden und hebt deren Vorteile gegenüber alten Gebrauchsweisen hervor.  Und das auf einer beispielhaften Art und Weise dass man sofort ein neues Projekt starten möchte.

Einen Hacken hat die ganze Sache allerdings noch: HMTL5 wird nicht vom IE unterstürzt, nicht vom 6er und – so unverschämt  und dreist kann nur Microsoft sein – auch nicht vom 8er! Aber eine Lösung liegt parat! Ein simples JavaScript wird eingebunden das die fehlenden Elemente herbeischaft. Und wer sich schon mal ##!; unrühmlich mit transparenten PNG quälen musste, dem sei eines gesagt: Es ist Kinderleicht und vor allem es funktioniert!

Warum dann trotzdem HTML5? Trotz der Unmacht gegenüber Microsoft und einem Heer unbeugsamer wie auch folgsamer I-Explorer Nutzern?

Kuckt man sich einen Schnipsel CSS an, springt einem das silberne Kättchen ins Auge:


header {
    display:block;
    height:100px;
    margin:0 auto;
    width:790px;
    padding:4px 0 6px;
    position:relative;
    background:#6Ec2f5;
}

header h1{
    margin:10px;
}

header nav li {
    margin-left:15px;
    list-style: none;
    float:left;
}

article {
    margin:0 auto;
    width:788px;
    padding:20px;
}

footer {
    margin:0 auto;
    width:788px;
}

Bleibt zu hoffen dass Microsoft mit dem 9er IE bald den Strohalm bereitstellt.

Blogs, Feeds, deren Sinn und der NewsFox

Posted on 18 Juli 2009 | No responses

Blogs

Ein Teil von mir gehört noch zur WWW-Steinzeit: Früher und gar nicht soooo lange her, habe ich mich gefragt was der Sinn von Blogs und Feeds ist. Blogs waren umständlich, unübersichtlich und vollgestopft mit Links – zum Glück zeichnet sich hier ein Trend zum contexturelen Maßhalten wofür im Gegenzug der grafische Anspruch steigt. Eine Entwicklung, die denke ich, dem gesamten World Wide Web sehr zu gute kommt. Ein Blog (und ich hoffe es gibt bald eine alternative Bezeichnung dafür) ist eine etwas bessere Homepage mit einem Gästebuch, mit dem Vorteil, sehr leicht erweiterbar zu sein. Eher ein Notitzbuch als ein Denkmal also. Zusätzlich bietet sich der Blog für kleinere Communities, Clubs, Vereine, aber auch Firmen und interne Netzwerke an mit der MultiUser-Funktionalität an.

Rss-Feeds

Wen man sie erstmal einmal kennt möchte man sie nicht mehr missen: Die vielen RSS-Feeds im Net. Bei kleinen und privaten Seiten, speziell Blogs, halten Sie deren Abonnenten auf dem laufenden: Ich sehe bei 100 abonnierten Blogs sofort wo in den letzten Tagen neue Artikel erschienen sind. Bei größeren Blogs (wie das smashingmagazine.com) stellen sie eine gute Übersicht dar. Übrigens funktionieren viele Twitter-User deren Account zum Feed, aber naja…

1245515100NewsFox

Feeds machen nur Sinn wenn man sie “sammelt”. Komischerweise gibt es keine standardisierte Reader, so wie Outlook oder Thunderbird. Ich habe eine weile mit dem Flock Browser gesurft – eigentlich eine coole Firefox-Erweiterung mit eingebautem Feed-Reader. Aber ich konnte den Browser irgendwann nicht mehr zum laufen bringen und surfe seit dem wieder mit dem Firefox. Leider funktionieren manche Firefox Plugins nicht auf dem Flock und die FireBug-Tastaturkürzel beißen sich mit dem Shortkeys von Flock-Tools -  Fazit: der Browser ist geil zum Surfen aber unbrauchbar zum Coden.

Vor kurzem habe ich das NewsFox PlugIn getestet und werde es weiterhin testen! :)

YouTube stellt IE6 Support ein

Posted on 16 Juli 2009 | No responses

You Tube IE 6 Warn

Erstaunlicherweise Surft ein nicht zu unterschätzender Teil mit dem verjährten Microsoft-Browser im Web. Im Webhike Blog sind es, laut StatPress, immerhin 31%, wobei 60% der Suchmaschinenbesucher über Windows Life hier her gelangen.

Von wegen Schnellebigkeit neuer Medien… Eine Erklärung für diesen Umstand sind angeblich Großunternehmen auf deren Rechner standardmäßig veraltete Software läuft. Sicherheitslücke?

Eine andere interessante Entwicklung in der Browser-Szene ist der Rückgang von Explorer Nutzern. Laut Webmasterpro-Webanalyse sinkt deren Anteil unter die 50% Marke.

« newer postsolder posts »

Recent Posts

Tag Cloud

2010 bug Apache Arrays Blogs blog search browser CMD CodeIgniter Console Eingabeaufforderung Feeds google hot-keys html5 ie6 JavaScript Kohana lernen microsoft Mootools mvc OOP PHP PHP-Framework PHP Filter PlugIn Prototype refactoring Regex RewriteRule RSS Script Smarty snippets Statpress Tricks tutorials Web Windows Console zend framework Zend Helper Zend_Date zf lernen

Meta

Mein Blog is proudly powered by WordPress and the SubtleFlux theme.

Copyright © Mein Blog