Обсуждение: pg_fetch_object
I'm using PHP 5.0.4, PostgreSQL 8.0.2. Docs say (http://www.php.net/manual/en/function.pg-fetch-object.php): object pg_fetch_object ( resource result [, int row [, string class_name [, array params]]] ) pg_fetch_object() returns an object with properties that correspond to the fetched row's field names. It can optionally instantiate an object of a specific class, and pass parameters to that class's constructor. I'm passing a class name string as the third parameter, but I only get back a stdClass object. I also added an array of params as the 4th parameter to pass to the constructor, but it does not appear to be called. Has anyone successfully used this to create a class other than stdClass? Thanks, John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL
On Fri, Sep 23, 2005 at 08:55:44PM -0400, John DeSoi wrote: > pg_fetch_object() returns an object with properties that correspond > to the fetched row's field names. It can optionally instantiate an > object of a specific class, and pass parameters to that class's > constructor. > > I'm passing a class name string as the third parameter, but I only > get back a stdClass object. I also added an array of params as the > 4th parameter to pass to the constructor, but it does not appear to > be called. > > Has anyone successfully used this to create a class other than stdClass? Works here with PHP 5.0.4 and PostgreSQL 8.0.3: class Foo { function Foo($arg) { print "DEBUG: Foo($arg)\n"; } } pg_connect("dbname=test user=test password=test"); $result = pg_query("SELECT 'foo' AS val"); $obj = pg_fetch_object($result, 0, 'Foo', array("test")); var_dump($obj); pg_close(); The above code produces the following output: DEBUG: Foo(test) object(Foo)#1 (1) { ["val"]=> string(3) "foo" } Could you post a minimal example that doesn't work? -- Michael Fuhr
Hi Michael, On Sep 23, 2005, at 10:44 PM, Michael Fuhr wrote: > Works here with PHP 5.0.4 and PostgreSQL 8.0.3: Thanks for the example, it helped me figure out my dumb mistake. I copied code from another place using a PHP abstraction library. I was calling 'db_fetch_object' not 'pg_fetch_object'. Thanks much, John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL