PHP odds! today: pass by reference traps

This is dangerous:

//example array
$array = array('a' => array(array(243,453,435,232)));
foreach ($array['a'] as &$value) {
$value[3] = $newvalue;
}

This works, but now the $value var is in the array by reference which can lateron lead to:
Notice: Array to string conversion
EDIT:
see below in the comments for when…

This works better:

Continue reading “PHP odds! today: pass by reference traps”

Persistente Objekte in PHP und redirects

Achtung Falle!
Benutzt man persistente Objekte in PHP, die ungefähr so aufgebaut sind, wie hier beschrieben.

class User
{
public function __construct(){}
// save object to session variable
public function __destruct()
{
$_SESSION['user'] = serialize($this);
} 
// factory method
public static function factory()
{
session_start();
if(isset($_SESSION['user']) === TRUE)
{
return unserialize($_SESSION['user']);
}
return new User();
} 
}

Continue reading “Persistente Objekte in PHP und redirects”

Grouping & Sorting in MongoDB

Will man mit PHP und MongoDB soetwas wie “SQL Aggregate Functions” umsetzen muss man sich etwas verbiegen.

MongoDb hat zwar eine group() function, die in etwa SQLs GROUP BY entspricht, allerdings kann man dies nicht kombinieren mit SORT oder LIMIT bzw den sort() und limit() Funktionen, da diese keinen Cursor zurückgibt sondern direkt ein Array.

Will man also sortieren und limitieren muss man sich des Map / Reduce features von MongoDB bedienen.

Continue reading “Grouping & Sorting in MongoDB”

Datei-Endungen im Vork Framework

Von Haus aus kommen im Vork Framework alle MVC Dateien ohne Endung daher.
Wer das ändern möchte kann folgende Dinge tun:

in der Klasse config in der Datei .config folgendes einfügen:

public $fileExtension = '.php';

dann erwartet vork im MVC Ordner Dateien mit der Endung .php.
Um alle Dateien umzubenennen braucht man eigentlich nur Windows Vista, eine präzise Maus und etwas Geduld.
oder folgende Zeile:

find /myVorkFolder/mvc -type f -exec mv '{}' '{}'.php ;

Continue reading “Datei-Endungen im Vork Framework”

PHP Simple HTML DOM Parser

Bin neulich über eine nette Klasse gestolpert, die sich lohnt mal anzuschauen:

PHP Simple HTML DOM Parser

Diese parst HTML und hält es als DOM Baum vor, auf welchem man ‘JQuery like’ Operationen dürchführen kann.

Siehe deren online Beispiel:

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images 
foreach($html->find('img') as $element) 
echo $element->src . '<br>';
// Find all links 
foreach($html->find('a') as $element) 
echo $element->href . '<br>';

Kann man schön mit ScreenScrapen oder mal ein CMS neu erfinden! ;)
Feine Sache!

Continue reading “PHP Simple HTML DOM Parser”

Fail! Zend Db: Ausgabe eines Update Query

Heute gibt es mal einen Fail!

Vorneweg: das Zend Framework (Version 1.10) wird hier “lose” benutzt, d.h. ohne Bootstrap. (Evtl. kann man da den Query loggen, aber kA)

Die simple Ausgabe eines Update Query zu Debug Zwecken ist mit dem Zend Db Packet anscheinend nicht möglich.

Man konstruiert den Query:

$this->db->update($this->table, $data, 'id = '.(int)$this->data['id']);

Continue reading “Fail! Zend Db: Ausgabe eines Update Query”