Edit report at http://bugs.php.net/bug.php?id=53394&edit=1
ID: 53394 Comment by: public at grik dot net Reported by: public at grik dot net Summary: ARRAY_AS_PROPS flag is ignored when used with PDOStatement::fetchObject Status: Bogus Type: Bug Package: SPL related PHP Version: 5.3.3 Assigned To: felipe Block user comment: N Private report: N New Comment: It's not bogus. It is a documentation issue at least. I guess, it needs to be described somewhere beyond the bugtracker. all I see in docs is: PDO::FETCH_PROPS_LATE ( integer ) Available since PHP 5.2.0 Previous Comments: ------------------------------------------------------------------------ [2010-11-24 22:16:34] fel...@php.net Hi, there was a discussion about this, see bug #49521 You could do something like this: $a = $PDO->query('select id from links'); $a->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'ArraySlice'); $a = $a->fetch(); var_dump($a->id, $a['id']); Thanks. ------------------------------------------------------------------------ [2010-11-24 15:27:19] tony2...@php.net Felipe, could you check this out plz? ------------------------------------------------------------------------ [2010-11-24 15:25:58] tony2...@php.net Please try using this snapshot: http://snaps.php.net/php5.3-latest.tar.gz For Windows: http://windows.php.net/snapshots/ ------------------------------------------------------------------------ [2010-11-24 13:54:20] crocodile2u at gmail dot com Or possibly it would be better to change the PDO's behaviour? It seems very strange and unnatural that constructor is called after the properties are set. It only makes developers write unobvious code for the only purpose of workaround for this PDO's feature (personally, I would consider it a bug). ------------------------------------------------------------------------ [2010-11-24 13:46:58] public at grik dot net I was hinted that PDO sets the fields before calling a constructor. It makes everything clear. parent::__construct($array,ArrayObject::ARRAY_AS_PROPS); is called after setting object fields, and they don't get processed by ArrayObject::offsetSet. ArrayObject::оffsetGet after changing mode to ARRAY_AS_PROPS doesn't see the fields set by the PDO hack. оffsetGet can process existing fields after changing the mode, I suppose. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=53394 -- Edit this bug report at http://bugs.php.net/bug.php?id=53394&edit=1