Bananas Development Blog: share your thoughts

Twitter und Zend_Oauth

Wer das schon immer mal probieren wollte oder machen muss, dem sei geholfen:

Twitter API, OAuth Authentication, and Zend_Oauth Tutorial
I recently had to work on a project that required me to interact with the Twitter API. I had done this before so I wasn’t expecting anything different until I remembered that Twitter had changed their API to start using OAuth for authentication. If you are not familiar with OAuth, it’s a secure way of authenticating without requiring a user to submit their username and password to third-parties – you can read more about it at OAuth. There are lots of resources online that talk about this in detail but I wasn’t able to find one that explained the entire process in a way that made sense. Hopefully this post will give you everything you need to get started with the Twitter API. I’m going to go through the steps required to make this work without using the entire zend framework.


Viel Spass dabei !

ZendFramework, SQL und Segmentation Fault

ZendFramework und lange DB Statements und das Problem mit dem preg_replace.

Das Problem hatte ich ja schon mal. Leider ist das in der aktuellen (1.11.0) Version immer noch so. Betrifft alles was länger als ungefähr 3000 Zeichen ist.
Nun lässt sich das aber nicht so einfach wie damals beheben.

Nach langem Suchen und Versuchen es zu fixen, kam ich zu dieser vermeintlichen Lösung:

$db->getConnection()->query($sql);


Leider funktionierte das nicht.

Nach ein wenig hin und her viel mir auf, dass dieses Problem nur auftritt wenn es sich im einen INSERT handelt. Nicht aber wenn es ein UPDATE Befehl ist.

Da kam dann der aha Effekt. Ich baute meinen INSERT Befehl einfach um, in dem
ich nur einen INSERT machte damit ich eine neue ID bekam. Diese konnte ich dann verwenden um die restlichen Daten ab zu speichern.

$db->query(INSERT);
$db->lastInsertId();
$db->getConnection()->query(UPDATE);


Somit lies sich das "Problem" beheben...

Die Bugs die das betrifft sind (unvollständig):
- http://framework.zend.com/issues/browse/ZF-10209
- http://framework.zend.com/issues/browse/ZF-10248
- http://framework.zend.com/issues/browse/ZF-5063

Dependency Tracking (Was braucht meine Software eigentlich ?)

Man entwickelt software und programmiert so fröhlich vor sich hin, aber an alle Anforderungen denkt man nicht immer.

Nun gibt es was dolles für das Zend Framework.

Zend Framework Automatic Dependency Tracking

When you develop or deploy an application, dependency tracking is one of the problems you must solve. Keeping track of dependencies for every application you develop is not an easy task. To solve this problem I’ve created Zend_Debug_Include, a Zend Framework component that supports automatic dependency tracking.


Kurz zusammengefasst macht die Erweiterung eine Auflistung was alles von ZendFramework benötigt wird.

Banana
out.

Zend Framework Architecture

Wie sieht den das ZendFramework eigentlich so "innen" den so aus ?
Wie ist es aufgebaut ?

Dieser Artikel gibt da ein wenig Aufschluss darüber.

Before we begin our exploration of the architecture of the Zend Framework (ZF), it is important to discuss how a typical MVC application is built. Examining and understanding the architecture of an MVC Web application allows you to make more contextually sound choices when building your application.


Zend Framework Architecture ( PHP::Impact ( [str Blog] ) )

Banana
out.

Segmentaion fault on preg_replace in Zend_Db_Statement

So ich mag das ZF da es ja so viele fertige Möglichkeiten bietet.

Aber manchmal habe ich das gefühl das es einfach ein wenig übertreibt.

Bin gerade auf folgenden Bug gestoßen:
Segmentaion fault on preg_replace in Zend_Db_Statement

Da muss man erster mal darauf kommen. Erster dachte ich es seien irgendwelche Zeichen in der SQL oder so, aber nein es fing ab einer bestimmten SQL länge an.
Mit Hilfe von ZendStudio und der Debug funktion konnte ich dann das Problem bestimmen.

Es ist die Zeile 187 in der Zend/Db/Statement.php Datei (ZF version 1.7.1).
Dieser preg_replace fällt da auf die Nase und in der erro log des apache steht nur "[notice] child pid 7426 exit signal Segmentation fault (11)"

Nun ja da es ja schon dieses Bug gibt und bisher keine Lösung musste ich mir selber helfen.

Also habe ich einfach die Zeile 108 in der Zend/Db/Statement.php auskommentiert. Dies ist die Zeile in der das SQL mit der funktioner _parseParameters aufbereitet wird (oder was auch immer.....).
Bisher ging dann alles gut und auch das SQL machte dann keine Probleme mehr.

So nun geht es weiter.

Banana
out.

Zend Framework, Zend_DB und ? in dem SQL

Sollte irgend jemand schon mal den Fehler bekommen haben:
Invalid parameter number: no parameters were bound" when using ' and ? in where clause

dem kann geholfen werden.

Dazu ist aber folgendes nötig. Man braucht mindestens MySQL 4.1.3 sowie die mysqli extension von PHP. Denn damit sollte der Fehler nicht mehr kommen.

Hat mich schon ne weile genervt, da ich einfach nicht dahinter gekommen bin warum.

Hier ist sogar ein Bug dazu:
Invalid parameter number: no parameters were bound" when using ' and ? in where clause

Dazu sollte man beachten, dass die mysqli Extension die bessere Wahl ist, wenn man aktuellere MySQL Datenbanken verwendet.

banana
out.

ZendFramework Laden

Die Anleitung beschreibt zwar die Möglichkeiten wie aber gibt kein eindeutiges Beispiel.

Hier ist wie man das Zend Framwork einbindet.
// load the zend Framework
define("LIB_DIR","lib");
$include_path = get_include_path();
if(!ini_set('include_path',$include_path.PATH_SEPARATOR.ABSOLUTE_PATH.LIB_DIR)) {
	die('Failed to set the include path. Check you php configuration.');
}

In dem Verzeichnis "lib" liegen bei mir alle bibilotheken die ich so brauche.
Dabei ist zu beachten, dass das Zend Framework in das Zend Verzeichnis reinkopiert werden muss, da es intern auch diesen Namen verwendet um Dateien einzubinden.

Hier mal die Verzeichnisstrucktur:
lib/
lib/Zend
lib/Zend/Acl
lib/Zend/....


Also muss der include Path um das Verzeichnis lib erweitert werden.
Die Klassen des Zend Frameworks werden dann mit
require_once 'Zend/Mail.php';

geladen.

Zend Framework Tutorial

Hier mal ein deutsches Tutorial zu Zend Framework:

Zend Framework Tutorial

Zend Framework

Nun nach dem ich lange mit dem XP-Framework rum gemacht habe und nicht sehr zufrieden bin damit, werde ich mich mal in das Zend Framework einarbeiten.

Bisher finde ich das alles ganz gut und es ist auch gut dokumentiert.

Download und Dokumentation:
Zend Framework