Re: [PHP4BETA] DB.php
| From: | Stig Bakken | Date: | Wed, 08 Dec 1999 11:43:05 +0000 |
| Subject: | Re: [PHP4BETA] DB.php | ||
| References: | 1 | Groups: | php.version4 |
| Request: | Send a blank email to php-version4+get-7661@lists.php.net to get a copy of this message | ||
On Tue, 7 Dec 1999, Andrei Zmievski wrote:
| I fail to understand the purpose of DB class in PEAR. Is it supposed
| to be a factory class? Because it certainly does more than that. Why
| does it have fetchRow() and DB_mysql class has fetchRow(), yet DB class
| doesn't have query() method.
There are two classes in DB.php: DB and DB_result. DB contains two
factory methods (factory and connect) as well as a bunch of functions
common to all of DB, such as rewriting error codes to messages. These
should always be used with the "static" syntax: DB::isError().
Then there's DB_common, which defines some default methods (sort-of
virtual), as well as a bunch of common utility methods I started writing
this morning. DB_common is only for inheritance from DB_[dbtype].
DB_[dbtype] implements only the database-specific stuff. The query()
method returns a DB_result object, which is defined DB.php (this is where
the fetchRow() method you mention comes from).
Example:
$dbobj = DB::connect("mysql://user:pass@localhost/mydb");
// $dbobj is an instance of DB_mysql
$robj = $dbobj->query('SELECT * FROM mytable');
// $robj is an instance of DB_result
There's a lot of stuff in the DB code that needs the "return references"
rewrite though, just look for "XXX ADDREF". :-)
- Stig