Nov 222011
 

Ohne viel Worte, einfach mal ein kleines Snippet – just use it :)

    /**
     * Create an array from all protected properties and returns it.
     *
     * @return array
     */
    public function toArray()
    {
        $reflectionObj = new ReflectionClass(get_class($this));
        $vars          = $reflectionObj->getProperties(ReflectionProperty::IS_PROTECTED);
        $array         = array();

        foreach (new RecursiveArrayIterator($vars) as $property) {
            $name = $property->getName();
            $tempPropertyName  = trim($name, '_');
            $tempPropertyArray = explode('_', $tempPropertyName);

            $propertyName      = '';
            foreach ($tempPropertyArray as $part) {
                $propertyName .= ucfirst($part);
            }

            $array[lcfirst($propertyName)] = $this->$name;
        }

        return $array;
    }
 

Ich möchte euch heute kurz erklären, wie ihr aus vorhandenem PHP-Quellcode ein UML-Diagramm erzeugen könnt.

Dazu muss zunächst die Komponente XSL als PHP5-Modul installiert werden:

$ sudo port install php5-xsl

Anschließend benötigen wir natürlich das Programm PHPUML selber:

$ sudo pear install pear/php_uml

Nachdem die Installation inkl. aller Abhängigkeiten abgeschlossen ist, können wir zum Ordner unseres Projekts wechseln und folgenden Befehl zur XMI-Generierung ausführen:

$ phpuml -x 1 -o application.xmi .

phpuml sollte dazu in unserer PATH-Environment-Variable hinterlegt sein. Ist das nicht der Fall, nutzen wir den vollen Pfad zur Binary:

$ /opt/local/bin/phpuml -x 1 -o application.xmi .

Der aktuelle Ordner wird recursiv durchgescannt. Wir müssen hier als Version 1 einstellen, da ArgoUML bei Version 2 ein wenig herum zickt. Jetzt haben wir unsere .xmi-Datei und können diese über ArgoUML importieren. Dazu öffnen wir ArgoUML und klicke unter Datei auf XMi importieren…. Die Klassen werden dem UML-Projekt jetzt hinzugefügt. Sollte ArgoUML vorher fragen ob das bestehende Projekt gespeichert werden soll bevor die Klassen importiert werden, so müsst ihr selber entscheiden ob gerade eines eurer Projekte geöffnet ist oder nicht. Habt ihr das Programm gerade erst gestartet, so könnt ihr getrost auf nein klicken um die Klassen zu importieren.

Der letzte Schritt ist jetzt eigentlich nur noch: Klassen in das Diagramm ziehen. Dazu klickt ihr auf die Klassen die ihr im Diagramm sehen möchtet und zieht diese in den Diagram-Bereich.

Nützlich ist diese Variante zum Beispiel, falls ihr für Reverse-Engineering-Zwecke die vorhandenen Klassen neu strukturieren wollt. Ein exportieren der Klassen zurück als Sourcecode ist natürlich mit ArgoUML auch möglich. Dazu einfach die zu verwendende Sprache auswählen und im Menü auf Generieren klicken.

 

In diesem Beitrag möchte ich euch zeigen, wie ihr unter MacOS X Apache, MySQL und PHP einrichten könnt. Somit braucht ihr keine WAMP/XAMPP-Umgebung installieren und habt volle Kontrolle über alle Konfigurationsdateien.

Aktivierung und Einrichtung von Apache2

Zunächst aktivieren wir die Webfreigabe. Dazu drücken wir Control+Leer und geben Systemeinstellungen ein. Unter Freigaben können wir dann die Webfreigabe per Haken anschalten.

Webfreigabe aktivieren

Webfreigabe aktivieren

Nun läuft Apache2. War das nicht einfach? Unser Webserver ist jetzt via http://localhost/~[Dein Benutzername] verfügbar. Wir sollten zunächst jedoch die Apache2-Konfigurationsdatei (/etc/apache2/httpd.conf) bearbeiten.

Suchen wir also nach unseren LoadModule-Zeilen und dekommentieren diese:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

LoadModule php5_module libexec/apache2/libphp5.so

Möchten wir Vhosts verwenden, so sollte auch vor folgender Zeile die Raute entfernt werden:

Include /private/etc/apache2/extra/httpd-vhosts.conf

Es ist uns nun möglich die Vhost-Datei zu editieren. Dazu führt bitte den nächsten Befehl aus:

$ sudo vim /etc/apache2/extra/httpd-vhosts.conf

Tippt dG ein um alles aus dieser Datei zu löschen. Nachfolgend habe ich ein Beispiel für einen Vhost-Eintrag:

<VirtualHost *:80>
    ServerAdmin devel@localhost
    DocumentRoot "/Users/[Dein Benutzername]/Sites/demo/"
    ServerName demo.de
    ServerAlias www.demo.de demo.de *.demo.de

    <Directory "/Users/[Dein Benutzername]/Sites/demo/">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

Über die /etc/hosts-Datei müssen wir nun ein paar Einträge machen. Diese könnten wie folgender aussehen:

127.0.0.1 demo.de

Als nächsten Schritt starten wir Apache2 neu:

$ apachectl -S

$ sudo apachectl restart

Installation von MySQL

Wir könnten jetzt  von der MySQL-Seite ein bereits fertig kompiliertes .dmg herunterladen und installieren. Wir gehen nun jedoch den Weg, MySQL selber zu kompilieren. Dazu benötigen wir einige Pakete mit ihren Abhängigkeiten. Davon ausgehend, dass MacPorts bereits auf dem System vorhanden ist, führen wir den nächsten Befehl aus um die benötigten Dateien zu installieren:

$ sudo port install bison bazaar cmake

Jetzt, da alle Abhängigkeiten installiert sind, können wir die Source-Dateien von der MySQL-Website hier herunterladen. (Sollte dieser Link – aus welchem Grund auch immer – irgendwann nicht mehr funktionieren, so kann über die Website www.mysql.com über den Download-Bereich der Source-Download ausgewählt werden)

Da wir uns unter MacOS X befinden, sollten in den Dateien /etc/passwd und /etc/group der Benutzer und die Gruppe mysql bzw _mysql vorhanden sein. Sollte diese nicht der Fall sein, so legt diese an.

Kopiert das soeben herunter geladene Archiv in den Ordner /usr/local/src bzw. /usr/local/temp und legt diesen Ordner an, wenn er nicht existiert.

Der Reihe nach sollten nun die nächsten Befehle ausgeführt werden. [Version] ist hierbei mit der entsprechenden Version auszutauschen:

$ sudo tar zxvf mysql-[Version].tar.gz

$ cd mysql-[Version]

$ sudo mkdir build

$ cd build

$ cmake .. -DCMAKE_BUILD_TYPE=Debug

$ cmake . -L

Wenn jetzt alles passt – und das sollte es eigentlich – können wir mit den nächsten Schritten weiter machen.

$ make VERBOSE=1

$ sudo make install

$ ls -Fla /usr/local/mysql

Nach ausführen des ls-Befehls, müssten wir eine Auflistung der vom MySQL-Installer angelegten Dateien und Ordner erhalten. Jetzt ist es an der Zeit die Dateiberechtigungen anzupassen:

$ sudo chgrp – R mysql /usr/local/mysql

$ sudo chown -R mysql /usr/local/mysql/run /usr/local/mysql/var

Wir benötigen für MySQL die my.cnf-Datei um Änderungen an der Software festzulegen. Kopieren wir diese also an die benötigte Stelle:

$ sudo cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf

$ sudo vim /etc/my.cnf

In der Sektion [mysqld] legen wir die nachstehenden Werte an bzw. ändern sie:

[mysqld]
skip-thread-priority
lower_case_table_names=2

Genug konfiguriert. Installieren wir die Default-Datenbank:

$ cd /usr/local/mysql

$ sudo scripts/mysql_install_db -umysql

$ sudo bin/mysqld_safe -umysql &

Zur Sicherheit wird empfohlen ein Passwort festzulegen:

$ /usr/local/mysql/bin/mysqladmin -u root password [Dein Passwort]

Mögliche Fehler:

Fehler 1:

/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)

Berechtigungen von /usr/local/mysql sind nicht/nicht richtig gesetzt. Führe bitte folgendes aus:

$ sudo chown -R mysql:mysql /usr/local/mysql*

Fehler 2:

/usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist

$ sudo /usr/local/mysql/bin/mysql_upgrade

Fehler 3:

/usr/local/mysql/bin/mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)

$ sudo touch /tmp/mysql.sock

$ sudo chown mysql:mysql /tmp/mysql.sock

Fertig. MySQL ist nun eingerichtet. Ich empfehle zudem den Einsatz des Workbench-Tools. Mit Hilfe dieser Software lassen sich Datenbank und Benutzer verwalten, Diagramme erstellen und Konfigurationsdateien ändern. Zudem ist es über das Workbench-Tool möglich via Mausklick MySQL-Server zu starten/stoppen.

Einrichtung von PHP

Zunächst kopieren wir die Konfigurationsdatei an den richtigen Ort:

$ sudo cp /private/etc/php.ini.default /private/etc/php.ini

Wir müssen PHP nun sagen, wo die MySQL-Socket-Datei zu finden ist:

$ sudo vim /etc/php.ini

Austauschen von:

pdo_mysql.default_socket=/var/mysql/mysql.sock

mit:

pdo_mysql.default_socket=/tmp/mysql.sock

Austauschen von:

mysql.default_socket=/var/mysql/mysql.sock

mit:

mysql.default_socket=/tmp/mysql.sock

Austauschen von:

mysqli.default_socket=/var/mysql/mysql.sock

mit:

mysqli.default_socket=/tmp/mysql.sock

Jetzt wird es aber allerhöchste Eisenbahn den Apachen – ein vorerst letztes mal – neu zu starten und unsere Konfiguration zu testen. :D

$ sudo apachectl restart

Wir sollten nun eine funktionierende Apache2-, MySQL- und PHP-Installation haben und können beginnen zu entwickeln. Der Übersichtlichkeit halber empfehle ich den Einsatz der hosts-Datei und der Apache2-Vhosts.

Weiterführende Informationen und Referenzen:

http://forge.mysql.com/wiki/CMake#Build_using_the_same_options_as_in_MySQL_official_release

http://developer.apple.com/internet/opensource/osdb.html

© 2010-2012 RenePardon BoonWeb Suffusion theme by Sayontan Sinha