Hallo!
Mein Name ist David Müller, ich arbeite bei der Public Cloud Group und wohne in Frankfurt. Hier geht es hauptsächlich um Webentwicklung.Kategorien
- webdev (131)
- php (84)
- Javascript (32)
- Datenbanken (22)
- Software Engineering (12)
- Performance (8)
- Security (27)
- PHP-WTF (11)
- Best of the Web (13)
- Quicktips (32)
- Linux (4)
- Java (3)
- misc IT (10)
- Persönlich (9)
- webdev (131)
Blogroll
Neueste Kommentare
- Tristan Tate bei Javascript: Arrays kopieren
- Daniel Marschall bei Dealing with Trusted Timestamps in PHP (RFC 3161)
- Login Mit Facebook Tutorial – Logini helper bei Facebook API – Tutorial
- PHP validation/regex for URL - Design Corral bei Why URL validation with filter_var might not be a good idea
- Manuel bei Meine ultimativen Buchempfehlungen
Archiv der Kategorie: webdev
Reflection – Teil 2: ReflectionMethod und ReflectionFunction
Hier nun also der zweite Teil, nachdem im letzten die ReflectionClass behandelt wurde. Doch nicht nur Klassen und Objekte kann man reflektieren, sondern auch Methoden und Funktionen . Das soll nun hier das Thema sein.
Beispielcode
Wie im letzten Beispiel muss folgender Code für alle weiteren Zwecke herhalten:
class Calculator { /** * This method adds the first two parameters or multiplies * them depending on the value of the third param */ public function AddOrMultiply($a, $b, $c = true) { static $someUselessVar = "123"; return $c ? $a+$b : $a*$b; } private function IamPrivate() {} }
Generelle Informationen
Um erstmal an ein ReflectionMethod – Objekt zu kommen, um dieses dann abfragen zu können müssen wir den Weg über das ReflectionClass – Objekt der beinhaltenden Klasse gehen.… Den ganzen Post lesen
Veröffentlicht unter php, webdev
4 Kommentare
Reflection – Teil 1: ReflectionClass
Was ist Reflection
Eines der coolsten Features in PHP, was leider so gut wie ohne Dokumentation dasteht. Reflection ist eine Möglichkeit, Meta Informationen über so ziemlich alles in PHP herauszubekommen. Welche Interfaces implementiert eine Klasse? Welche Methoden hat sie? Wieviele Parameter hat eine Funktion / Methode, davon wieviele optionale? Was ist der Default-Wert eines Parameters? Dies und einiges mehr ist wohl nur mit der Reflection herauszubekommen.
Arten der Reflection
Oben habe ich mit meinen Fragen bereits die Grundbereiche der Reflection erschlagen. Was ist nun wie reflektierbar?
- ReflectionClass – Liefert Infos über Klassen
- ReflectionObject – Im Prinzip wie die ReflectionClass, nur das der Angriffspunkt nicht die ganze Klasse, sondern eine Instanz dieser ist.
Veröffentlicht unter php, webdev
3 Kommentare
Datenbank-Klasse (auf PDO basierend)
Es ist wohl eine der am häufigsten neu geschriebenen Klassen. Jedem Entwickler seinen Datenbank-Wrapper. PDO macht die Sache eigentlich schon sehr angenehm, trotz allem vermisst man hier und da ein paar Komfort-Features. Habe neulich meine Datenbank-Klasse auf Github hochgejagt.
Features
- Kommt komplett mit Unit-Tests daher
- Komfortables Handling mit Prepared Statements
- Möglichkeit, das PDO DB-Handle aus der Datenbank herauszubekommen – volle Flexibilität
- Unterstützt mehrere Datenbank-Verbindungen gleichzeitig
- Komplett sauberes exceptionbasiertes Fehlerverhalten
- Komfortfeatures (siehe unten)
- Komplette Dokumentation
Einen Einblick in die Klasse erhaltet ihr in diesem kleinen howto auf github.… Den ganzen Post lesen
Veröffentlicht unter php, Datenbanken, webdev
1 Kommentar
MySQL Views
Views sollten eigentlich jedem Webdeveloper bekannt sein, deswegen versteht sich der Post hier eher als kleiner „Reminder“. Legen wir doch direkt mit einem Beispiel los. Ich habe eine Tabelle pizzas:
Und eine Tabelle ingredients:
Klassische 1:n-Beziehung also. Ich habe eine wunderbare, normalisierte Datenhaltung (okay, man könnte auch den Zutaten noch eine Zutaten-ID geben aber das verkompliziert das Beispiel unnötig). Wenn ich jetzt allerdings häufig den Bezug der Pizza zu den Zutaten brauche, schreibe ich in vielen Funktionen joins von ingredients auf pizzas. Das geht schlauer! – mit Views.
CREATE VIEW pizzaingredients AS SELECT p.*, i.ingredient FROM pizzas p LEFT JOIN ingredients i ON i.pizzaid… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, webdev
1 Kommentar
YODA Conditions
Yoda dreht bekanntlich gern Satzbestandteile um. Das hat jetzt noch nichts direkt mit PHP zu tun. Zäumen wir das Pferd mal andersherum auf. Was fällt hier auf?
function doSomething() { return false; } $res = doSomething(); if ($res = false) { echo "1"; } else { echo "2"; }
Der geübte Debugger sieht sofort: Im if haben wir eine Zuweisung und keinen Vergleich. PHP findet das voll okay, IDEs geben in der Regel einen Warnhinweis. Raus kommt im Übrigen 2.
Was wäre jetzt, wenn wir frei nach Yoda geschrieben hätten:
if (false = $res) { echo "1"; } else { echo "2"; }
Parse error: syntax error, unexpected ‚=‘.… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
1 Kommentar
PHP WTF #2
Und weiter gehts mit den Kuriositäten (Teil 1).
$ar = array(1,2,3); foreach ($ar as &$a) echo $a; foreach ($ar as $a) echo $a;
Wenn 123123 rauskommen würde, wärs langweilig oder? Kommts auch nicht. 123122 lautet das Ergebnis.
Da ich unmöglich schöner erklären, was da intern vor sich geht als Herr Schlüter, sei an dieser Stelle elegant zu ihm übergeleitet.… Den ganzen Post lesen
Veröffentlicht unter php, PHP-WTF, webdev
1 Kommentar
PHP WTF #1
Ohne viel Worte: was kommt bei dem Code raus?
class çåèäßäöü { public static function weird() { function stuff() { return 123; } } } echo çåèäßäöü::wEiRd().sTuFf(); echo çåèäßäöü::weird().stuff();
Geballte „weirdness“. Wenn man jemandem so einen Schnippsel vorlegt und ihn laut nachdenken lässt (Bewerbungsgespräch), stellen sich folgende Fragen
- Unicode in Klassennamen? Kann das gehen?
- Sind Funktionsnamen case sensitive?
- Nested Functions?
- Warum sind es 2 Calls?
Und nun zu Auflösung:
- Das geht! Klassen, Funktionen und Variablen
dürfen unicode-Zeichen beinhalten. (Richtigstellung: Wie Fabian per Kommentar angemerkt hat, ist es kein „wirklicher“ unicode, denn die verwendbaren Zeichen beschränken sich auf den regulären Ausdruck[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Natürlich ist das nicht empfehlenswert, aber prinzipiell möglich)
- Auch das haut hin.
Veröffentlicht unter php, PHP-WTF, webdev
8 Kommentare
What you need to know about the DOM: 20 functions in 100 lines
Okay, first english article. I’m feeling kind of stupid when posting code related topics in German so I’m gonna try to bring some english content in here. Personally I think that comments, variable names and everything code-related should be written in english – considering multi-national development teams.
So, enough introduction. What follows is one single function performing stupid javascript actions with the Document Object Model. Even though every sane developer prefers the use of a library like jQuery for stuff like that, it’s always good to know what goes on behind the scenes. What I’ve covered are the following functions:
- document.
Veröffentlicht unter Javascript, Security, webdev
Hinterlasse einen Kommentar
Java Hibernate Tutorial
Nachdem ich mit SQLite das Java-Fass aufgemacht hab, gibts nun noch Hibernate hinterher. Hibernate ist wohl eines der bekanntesten ORM-Frameworks. Ich zeige das ganze anhand von Netbeans, aber auch hier sollte Eclipse nicht weit entfernt sein. Es wird frech davon ausgegangen, dass das Java-Plugin installiert ist.
1) Hibernate Plugin installieren
In Netbeans unter Tools -Plugins -Availible Plugins -Hibernate. Sollte schmerzfrei durchlaufen.
2) Java Projekt anlegen
File -New Projekt -Java Application. Darf auch eine DesktopApplication sein, wenn ihr den GUI-Builder (Swing) als Plugin mitinstalliert habt – tut aber für Hibernate nichts zur Sache. Die Standardeinstellungen tun es unter Netbeans für das neue Projekt.… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, Java
1 Kommentar
Java und SQLite
Was folgt ist ein etwas themenfremder Exkurs in die Java-Welt. Und zwar ein kleines Tutorial zur Anbindung einer (dateibasierten) SQLite Datenbank an Java. Ich werde Netbeans benutzen, unterstelle aber das Eclipse da sehr ähnlich zu handhaben sein wird. Als OS kommt Windows 7 zum Einsatz, ich werde aber an den entsprechenden Stelle auch den „Linux way“ dazuschreiben. Los gehts auf Basis eines frisch installierten Netbeans ohne Java-Plugin – wenn Java also schon drauf sein sollte, einfach bei Schritt 3 loslegen.
1) JDK herunterladen und installieren
Findet man hier – leider aber nur mit Oracle Account. JDK installieren. Netbeans muss dabei geschlossen sein, sonst bleibt der Fortschrittsbalken bei der JDK Installation einfach stehen (ohne Warnung).… Den ganzen Post lesen
Veröffentlicht unter Datenbanken, Java
5 Kommentare