Wenn man eine reihe von Dateien hinzugefügt hat, kann man diese mit folgendem Befehl dem Repository kenntlich machen:
[bash]svn st | grep „^?“|awk ‚{print $2}‘ | xargs svn add –force[/bash]
Rekursives löschen in Subversion (erkennen gelöschter Dateien)
Wenn man auf der Kommandozeile mit Subversion arbeitet, möchte man vielleicht Dateien, welche man gelöscht hat dem Subversion Repository kenntlich machen. Dies geht mit folgendem Befehl:
Löschen:
svn st | grep '^!' | awk '{print $2}' | xargs svn delete --force
Erneute PHP Zertifizierung
Am 24. November habe ich erfolgreich die PHP 5.3-Zertifizierung abgelegt. Nachdem ich bereits 2005 die als einer der ersten in Deutschland diesen Zettel hatte, wollte ich das Ganze mal auf den aktuellen Stand bringen. Geschafft :-)
Das Singleton Pattern
Da ich mich seit Langem mit Entwurfsmustern (Design-Patterns) beschäftige, habe ich mich entschlossen Codebeispiele hier zu veröffentlichen und diese zum besseren Verständnis zu beschreiben.
Hier die Implementierung des Singleton Patterns in PHP.
[php]
final class Singleton {
// Statische Variable welche die Instanz hält
private static $instance = NULL;
// Konstruktor private, damit die Klasse nur aus sich selbst heraus instanziiert werden kann
private function __construct() {}
// Anlegen und zurückgeben der Instanz
public static function getInstance() {
if (self::$instance === NULL) {
self::$instance = new self;
}
return self::$instance;
}
// Verhindert das Clonen von außen
private function __clone() {}
}
$singleton = Singleton::getInstance();
[/php]
Häufig wird dieses Singleton eingesetzt um eine Datenbank Verbindung über einen zentralen Zugriffspunkt zu steuern. Hier auch der Beispielcode, wie ich eine solche Implementierung realisiert habe:
[php]
require_once ‚Zend/Db.php‘;
require_once ‚Zend/Db/Adapter/Pdo/Mysql.php‘;
require_once ‚Zend/Registry.php‘;
class Wsmm_Core_Data
{
/**
* @var array
*/
private static $_adapters;
/**
* Singleton. Connects to the database.
*
* @return Zend_Db_Adapter_Pdo_Mysql
*/
public static function getAdapter($db = ‚default‘)
{
if (isset(self::$_adapters[$db]) == false) {
try {
//lesen der Konfiguration aus den Settings und erzeugen des Adapters
self::$_adapters[$db] = new Zend_Db_Adapter_Pdo_Mysql(Zend_Registry::get(‚config‘)->db->$db);
self::$_adapters[$db]->setFetchMode(Zend_Db::FETCH_OBJ);
self::$_adapters[$db]->getConnection()->exec("SET NAMES ‚utf8’");
} catch (Exception $e) {
//error handling
}
}
return self::$_adapters[$db];
}
}
[/php]
Mysql Datenbank auf 1&1 Managed Server sichern
Anfänglich war mysqldump etwas zickig und brachte ständig den Fehler:
Got error: 2002: Can't connect to local MySQL server through socket
Allerdings ist es ganz einfach:
mysqldump --host=localhost --user=dboxxxxxxxxx --password=******** -S /tmp/mysql5.sock dbxxxxxxxxx > dump.sql
xt:Commerce zum kostenlosen Download
Die beliebte Onlineshop-Software XT–Commerce, steht hier wieder kostenlos zum Download zur Verfügung. Die aktuelle Version lautet 3.04 SP2.1 und wurde unter der GNU GPL veröffentlicht.
Unglücklicherweise verlangt Der Herausgeber als Gegenleistung für den Download eine Support-Mitgliedschaft von 98€ für 12 Monate.
Da das Paket unter der GNU GPL veröffentlicht wurde, kann man es bei mir herunterladen :-)
Auf der Webseite von ZEND
Nachdem ich hier im Blog einen Artikel über das ZEND-Framework geschrieben habe, hat mich ZEND gebeten, ob Sie mich auf ihrer Webseite zitieren dürfen. Seit gestern steht dies nun auf zwei Seiten im WWW inkl. Bild.
Zu finden auf:
und
http://www.zend.com/de/services/training/
Ich arbeite schon seit meiner Selbständigkeit im Jahr 2002 mit den Produkten von Zend. Das Unternehmen hat in den letzten Jahren eine rasante Entwicklung erlebt. Das ZEND-Studio und auch das neue ZEND-Studio for Eclipse sind ausgewachsene, professionelle Werkzeuge, die kaum einen Wunsch offen lassen. Ich werde auch künftig, sowohl bei meinem Arbeitgeber als auch bei WSMM auf die Entwicklungs-Tools von ZEND zurückgreifen, weil dort vor allem auch das Preis/Leistungs Verhältnis stimmt.
ZEND Framework
Seit einiger zeit beschäftige ich mich mit dem ZEND-Framework [http://framework.zend.com/]. Nachdem ich nun auch ein zweiwöchiges Training absolviert habe (2 Stunden pro Tag / Online) muss ich sagen, dass dies eine große Erleichterung für den PHP Entwickler darstellt. Endlich kann man sich darauf konzentrieren, was die eigentliche Arbeit ausmacht. Das ZEND Framework bietet eine komplette Codebasis, die schon alles enthält, was der Entwickler in PHP3/PHP4 Zeiten „zu Fuß“ entwickelt hat.
Das komplette Framework ist objektorientiert und auf Basis von PHP5. Datenbankzugriff, E-Mail, PDF, Authentifizierung, Mehrsprachfähigkeit, Debugging, Logging, Session Management etc. Wer mehr darüber erfahren will, sollte sich einmal das sehr gute Handbuch [http://framework.zend.com/manual/en/] und die API-Doc [http://framework.zend.com/apidoc/core/] zu Gemüte führen.
Ich muss sagen, je mehr ich damit mache, desto mehr bin ich begeistert davon, und bereue den Schritt nicht, auch in der Firma auf Basis dieses Frameworks zu arbeiten. 80% der Basis-Arbeit, die man früher machen musste, nimmt einem das Framework ab. Was man sonst noch haben möchte, kann man geschickt durch Vererbung dazuentwickeln.
Auch wenn man nicht das komplette Framework mit seiner mächtigen MVC-Engine verwenden möchte, ist man beim ZEND-Framework sehr gut bedient. In Ergänzug mit PEAR, kann man sich nun wirklich auf das Entwickeln der Features konzentrieren.
Ich kann jedem nur empfehlen, sich das Framework anzuschauen. In Zukunft werden durch die sehr aktive Community noch weitere Module dazu kommen.
Warum man das Framework verwenden sollte kann man hier: [http://framework.zend.com/whyzf/] erfahren!
PHP5 und PHP4 parallel auf XAMPP in dediziertem Verzeichnis
Nach DREI Tagen, unzähligen Internetrecherchen, erfolglosen Mailing-Listen aufrufen etc. habe ich es GELÖST!
Folgende Problemstellung:
Auf einem Produktivsystem habe ich als Basis das XAMPP-Paket laufen. Aktuell stellen wir unsere entwicklung von PHP4 auf PHP5 um. Da die Systeme über die Jahre gewachsen sind, laufen die Anwendungen nicht fehlerfrei unter PHP5. Die Zeit um den Code anzupassen und einen kompletten QC-Run zu machen haben wir nicht, also muss ein Parralelbetrieb her. Die Idee war, in einem dedizierten Verzeichnis der WWW-Root alles Anwendungen auf PHP4 laufen zu lassen, und in allen anderen Verzeichnissen PHP5 zu verwenden. Soweit – so klar…. DENKSTE.
Die Lösung, die ich nun nach DREI Tagen suchen, probieren und Kopfkratzen gefunden habe, möchte ich hier für die Nachwelt festhalten:
1. webserver stoppen
2. Datei httpd-xampp.conf im Verzeichnis xampp/apache/conf/extra mit den folgenden Einträgen ergänzen
ScriptAlias /php-cgi/ „[drive]:/[path_to_xampp]/php/php4/“
<Directory „[drive]:/[path_to_xampp]/php/php4/“>
AllowOverride None
Options +ExecCGI -MultiViews -Indexes
Order allow,deny
Allow from all
</Directory>
3. in der Webserver-Root eine Datei .htaccess erstellen (geht unter windows nur aus einer Konsole [Start-Ausführen –> cmd]
4. in die Datei .htaccess folgendes eintragen
AddType application/x-php4 .php
SetEnv PHPRC „[drive]:/[path_to_xampp]/php/php4/“
AddHandler application/x-php4 .php
Action application/x-php4 „/php-cgi/php.exe“
5. Webserver neu starten
6. eine test.php Datei erstellen mit dem Inhalt:
<?php
echo phpversion();
//alternativ auch
//phpinfo();
?>
je nach Verzeichnis, in dem die .htaccess liegt sollte nun die Version 4.x.x oder 5.x.x angezeigt werden.
Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.