Marcus Boerger wrote:

Hello Jani,

Wednesday, April 14, 2004, 3:35:23 AM, you wrote:


On Wed, 14 Apr 2004, Marcus Boerger wrote:


This is actually a pretty nasty side effect of throwing exceptions in
ctors because these two lines have *very* different results if they
fail:

$db = new SQLiteDatabase();
$db = sqlite_open();

The first is fatal; the second isn't.


   So to use the OO API of sqlite requires that I use
   exceptions with it too..? It's pretty unfriendly to force
   the use of exceptions like this, IMO.

As i explained there is no good other way to tell the user the
ctor has failed. The two ways out out are:
1) Using empty ctors and check whetehr the instance is initialized
on every method call which is slower and different from our other
objects.
2) Pass another parameter by reference '&$failed' which will hold
the state of the ctor execution. Still you need to solve the
now illegal instance which pretty much leads to 1.

don't forget


3) Use a factory method and an empty constructor

$db = new SQLiteDatabase::factory();
if (!$db) {
    // handle error
}

Greg

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to