mijane Blog

ein paar interessante Sachen gibt es immer

PHPUnit unter WAMP installieren

Geschrieben von Peter Rother • Freitag, 2. Januar 2009 • Kategorie: PHPUnit

Für alle, die sich dazu entscheiden wollen ihre Projekte automatisiert zu testen, was ich allen nur empfehlen kann, habe ich hier mal ein kleines Tutorial, wie man PHPUnit unter Windows in einer WAMP Umgebung installiert. Ich habe es noch nicht unter XAMPP getestet, sollte aber genau so laufen.

1. Ladet euch WAMP herunter.


2. Nachdem ihr WAMP installiert habt, geht in die Windows Kommandozeilen Oberfläche und gebt folgendes ein (je nachdem in welchem Ordner eure WAMP Installation liegt und welche PHP Version ihr verwendet).
C:\>cd wamp\bin\php\php5.2.6



3. Von hier aus müsst ihr die Datei go-pear.bat aufrufen, um PEAR zu installieren.
C:\wamp\bin\php\php5.2.6>go-pear.bat



4. Wenn ihr die PEAR Installation ausführt, werdet ich nach ein paar Einstellungen gefragt. Sollte ich euch hiermit nicht auskennen, dann nehmt einfach die Standard Einstellungen an.


5. Nach der Installation ruft die Datei PEAR_ENV.reg auf. Hier werden die Umgebungsvariablen erstellt, die benötigt werden, um PEAR auf der Kommandozeile auszuführen.
C:\wamp\bin\php\php5.2.6>PEAR_ENV.reg

Sollte ihr PEAR jetzt nicht aufrufen können, dann geht unter Systeminformationen anzeigen -> Erweitert -> Umgebungsvariablen und erstellt den Eintrag.
Name: PHP_PEAR_BIN_DIR
Wert: C:\wamp\bin\php\php5.2.6



6. Jetzt sollte PEAR laufen und ihr könnt den Channel für PHPUnit einrichten.
C:\Program Files\PHP>pear channel-discover pear.phpunit.de



7. Ihr könnt PEAR nun verwenden, um PHPUnit zu installieren.
C:\Program Files\PHP>pear install phpunit/PHPUnit



8. Die Installation von PHPUnit sollte jetzt abgeschlossen sein und ihr müsstet die PHPUnit Dateien in eurem PHP Verzeichnis finden.
Tags für diesen Artikel: , ,
Tweet This!Tweet This!

Aktuelle Klassen in mijane

Geschrieben von Peter Rother • Dienstag, 30. Dezember 2008 • Kategorie: Über mijane

Es war doch ziemlich lange ein wenig ruhig hier. Ich brauchte doch mal eine etwas längere Auszeit, habe aber natürlich trotzdem ein bisschen an dem Framework gearbeitet. Hier möchte ich euch schon mal einen kleinen Überblick der bereits vorhanden Klassen geben.

mijane
mijane.core.cache
mijane.core.cache.apc
mijane.core.cache.memcache
mijane.core.cookie
mijane.core.database
mijane.core.database.mysqli
mijane.core.file
mijane.core.master
mijane.core.parameter
mijane.core.session

Die meisten Klassen sollten eigentlich schon durch den Namen preisgeben was sie tun sollen.
Die Klasse mijane sollte von jeder View oder Core Klasse außerhalb des Frameworks aufgerufen werden, um einen vollen Zugriff auf alle Framework Klassen zu bekommen. Dies muss selbstverständlich nicht geschehen, aber nur so kommen auch die Extensions der Core Klassen ins Spiel. Die Klasse selbst ist eine Extension von mijane.core.master. Die Klasse mijane.core.master beinhaltet eine Methode zum initialisieren der Datenbank und bietet einen Wrapper für alle mijane Klassen. Der Wrapper erlaubt momentan nur das erweitern der Standard Core Klassen um eine Extension. Ich überlege noch, ob hier eine Verkettung mehrere Klassen zum Einsatz kommt.

Es gibt hier auch noch ein paar autoload Methoden, um die benötigten Klassen vernünftig einzubinden. Die Funktionen greifen aber alle nicht auf die Globale autoload Funktion zu, sondern nutzen die SPL Funktion spl_autoload_register(), um andere Projekte nicht zu behindern.

Ich werde hier noch einen Bereich für die einzelnen Klassen einrichten, um euch ein bisschen von dem Code preiszugeben. Vielleicht entwickeln sich dadurch auch noch ein paar interessante Methoden oder Klassen.

Das war es erstmal für heute. Ich wünsche euch schon mal einen guten Rutsch ins neue Jahr und einen guten Verlauf für eure Projekte im neuen Jahr.
Tags für diesen Artikel: ,
Tweet This!Tweet This!

Example for an php doc block

Geschrieben von Peter Rother • Samstag, 22. November 2008 • Kategorie: Doc Blocks

Here is an little example how you can create your php doc block. This example is copied from the mijane files and it's included to an svn client:

/**
* ### short desc ###
*
* ### long desc ###
*
* PHP 5 // should be php 5 ;-)
*
* @filesource $HeadURL$ // file path from svn
* @copyright Copyright (c) 2008, mijane // your copyright
* @link http://www.mijane.de // your website
* @package mijane_framework // package
* @sub-package core // subpackage
* @since 2008-11-21 // date of creation
* @version 0.0.1 // version like #.#.#
* @revision $Revision:$ // revision
* @author Peter Rother // author
* @modifiedby $Author$ // last committer
* @lastmodified $Date:$ // date
*/



Tags für diesen Artikel: ,
Tweet This!Tweet This!

Subversion

Geschrieben von Peter Rother • Freitag, 21. November 2008 • Kategorie: Subversion

Viele haben es schon gehört, doch die wenigstens setzen es ein. Gemeint ist hier eine Versions Kontrolle wie Subversion oder CVS. Für die, die es noch nicht kennen sollten, folgt hier eine kurze Einleitung zum Thema Versions Kontrolle.

Tools wie CVS oder SVN (SVN entspringt CVS) ermöglichen euch, euren Quellcode zu verwalten. Ihr könnt zu jeder Zeit, an jede mögliche Stelle eurer Programmierung zurückspringen. Dies ist z.B. dann von Vorteil, wenn ihr merkt das ihr euch an einer Stelle verheddert habt und nun einen älteren Stand der Datei benötigt. Durch die Versions Kontrolle könnt ihr zu jedem Zeitpunkt der Programmierung zurück springen. Versions Kontrolle wird meistens eingesetzt wenn man mit mehreren Programmierern an einem Projekt arbeitet, man sollte es aber auch einsetzen wenn man alleine an einem Projekt oder sei es nur ein Script arbeitet.

Wie funktioniert die Versions Kontrolle?
Als erstes wird ein Programm zur Versions Kontrolle benötigt. Ich greife hier auf SVN zu, da es einige Features beinhaltet die CVS nicht bietet. Dies wären z.B. die Möglichkeit, Dateien oder Verzeichnisse zu verschieben oder umzubenennen, ohne die Versionsgeschichte zu verlieren.
Die Versionierung erfolgt in einem zentralen Projektarchiv in Form einer einfachen Revisionszählung (bei jedem Commit wird der Revisionszähler +1 erhöht). Bei Änderungen an Inhalten der Dateien werden immer nur die Änderungen in der Datei übermittelt, wodurch diese durch die Revisionskontrolle auch auf ältere Stände zurück gesetzt werden können.

Update:
Bei einem Update werden die bereits hinterlegten Daten aus dem Repository (das ist das Verzeichnis welches die Version pflegt) in das aktuelle Arbeitsverzeichnis geladen. Die Dateien werden hier weiter bearbeitet und nach Fertigstellung wieder in das Repository eingespielt.

Commit:
Dies bedeutet, dass die aktuell bearbeiteten Dateien wieder in das Repository eingespielt werden. Vor einem Commit sollte immer ein Update ausgeführt werden. Hierbei werden dann eventuelle Überschneidungen in den bearbeiteten Dateien angezeigt, die dann von SVN selbst gelöst werden können oder durch ein eingreifen der Person gelöst werden muss, die gerade an den Dateien gearbeitet hat.

Durch die Versions Kontrolle werden zwar keine Fehler vermieden, aber man kann Fehler leichter beheben. Wenn ein Script vorher einmal funktioniert hat und mit einer fehlerhaften Änderung wieder eingespielt wird, kann man ganz einfach zu der zuletzt funktionierenden Version zurück springen.

Dies war jetzt erstmal nur ein kleiner Anriss, was die Versions Kontrolle für euch tun kann. Ich werde in Kürze hierauf noch weiter eingehen und euch als nächstes zeigen, wie man einen Client wie SVN installiert. Hier kann es leider wie bei jedem Programm zu Schwierigkeiten kommen. Aber mit dem bald folgendem Tutorial sollte die Einrichtung leicht von der Hand gehen.

Ein paar Kleinigkeiten noch zum Abschluss:
macht möglichst oft einen Commit,
übertragt immer Dateien die auch zusammen gehören,
bei jedem Commit wird ein Kommentar mit eingetragen - dieser sollte knapp aber beschreibend für die getane Arbeit sein.

Einen SVN Client zum Download gibt es schon einmal hier: tortoise

Tags für diesen Artikel: , ,
Tweet This!Tweet This!

Um was geht es bei mijane

Geschrieben von Peter Rother • Donnerstag, 13. November 2008 • Kategorie: Über mijane

Nach etlichen Projekten, die immer wieder die gleiche Kernstruktur benötigten und gerade basierend auf meinen aktuellen Projekt www.pokerwelt24.com, hatte ich nun die Idee ein Framework aufzubauen, welches alle Standard Funktionen beinhaltet, die eine Applikation benötigt, die über ein paar Jahre hinweg bestehen möchte.

Da ich Programmierer bin der programmieren möchte und muss, liegen meine Stärke nicht in der Planung eines Projekts. So kam das, was kommen musste ... jedes Projekt was von mir gestartet wurde, wurde schon nach kurzer Zeit refactored.
Dies soll mit den aktuellen Projekten aufhören und so wurde mijane kurzer Hand geboren.

mijane wird in erster Instanz ein paar core Klassen beinhalten, die sich um Sessions, Cookies, Validierung, Datein und der Datenbank Verbindung kümmern werden. Somit ist der erste Schritt in die richtige Richtung schon einmal getan. Das neu Geschaffene soll auf dem Singleton Pattern basieren, da ich auch beruflich seit Neuestem mit diesem Design Pattern zu tun habe, entschloss ich mich Singleton auch für das mijane Framework einzusetzen.

Nun aber zu der Frage, warum ein neues Framework? Es gibt doch genug davon. Das Zend Framework halte ich persönlich für ein wenig overloaded. Andere Frameworks bieten mir nicht das, was ich benötige. mijane soll auch Einsteigern in die PHP Welt zu Gute kommen und diese an die Object Orientierte Programmierung heranbringen. In diesen Fällen gibt es meistens genug zu lesen und lernen, so dass die Einarbeitung in ein Framework sich nicht auch noch über Wochen hinziehen sollte.

Meiner Meinung nach sollte es als Erstes darum gehen, dem User die gängigsten Funktionen bereit zu stellen. Ja, das machen andere auch, aber mit welcher Überlast werden solche Frameworks betrieben? mijane soll die benötigte Standard Funktionalität beinhalten und leicht zu erweitern sein. Und da es komplett auf OOP Basis aufgesetzt sein wird, wird es das auch sein. Eine Funktion dazu ... kein Problem.

Es sind zu mijane schon ein paar Funktionen ausgearbeitet und auch schon umgesetzt. Hierzu werde ich euch auf dem Laufenden halten, sobald diese auch Spruchreif sind.

Das war nun auch erstmal der erste Post zu mijane und auch mein erster Blog Eintrag überhaupt. Ich hoffe ich kann euch noch viele interessante Einblicke in mijane und die PHP Welt mit ihren weiten Ausläufern bieten.
Tags für diesen Artikel: , ,
Tweet This!Tweet This!