Hello, Andrei, as I can see, you're the author of ext/overload. As suggested earlier, I've added a second parameter to sybase_fetch_object() which allows users to pass an object to be filled with the results from the fetched row (e.g. $article= sybase_fetch_object($q, new Article()); or $article= sybase_fetch_object($q, 'Article')).
Well, if "Article" is an overloaded class, they'd probably expect that their __set*-handlers are called when the object's properties are set. Of course, object_and_properties_init() does not do this. But indeed, it'd be quite nice if they would. Thus, one would need the C functions call_get_handler and call_set_handler to be declared not static but PHPAPI (is this right?) and an additional method to test if a zend_class_entry is overloaded. * http://sitten-polizei.de/php/overload.patch would make it work. Maybe macros would be a better way? * http://sitten-polizei.de/php/sybase_ct.patch shows a sample usage (btw, is there any documentation on TSRM?) maybe _set_object_prop should be moved to ext/overload as a utiltiy function? I came up with this since I use sybase resultsets within SOAP, clearly needing to distinguish strings from datetime types, int, floats and so on. My first idea was to introduce a function sybase_bind_datatype(SYBASE_DATETIME, 'Date') but why not make use of an already existing and powerful extension? Maybe an example illustrates best what you'd be able to do: Example ------- <?php class Date { var $_u; function Date($m) { switch (gettype($m)) { case 'string': $this->_u= strtotime($m); break; case 'integer': $this->_u= $m; break; } } // [...] } class Article { var $article_id, $caption, $text, $lastchange; function __set($k, $v) { $this->$k= $v; return TRUE; } function __get($k) { return $this->$k; } function __set_lastchange($val) { $this->lastchange= &new Date($val); return TRUE; } // [...] } overload('Article'); // [...] $q= sybase_query( 'select article_id, caption, text, lastchange from article', $dbh ); while ($article= sybase_fetch_object($q, 'Article')) { var_dump($article); } // [...] ?> Sample Output ------------- object(article)(4) { ["article_id"]=> int(6100) ["caption"]=> string(7) "Caption" ["text"]=> string(19) "This is the text:-)" ["lastchange"]=> &object(date)(1) { ["_u"]=> int(1025458800) } } - Timm -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php