Greetings, all.
I am trying to figure out a way to implement the following logic, but I am not
sure if it is possible to do so without a lot of additional side work:
I have a class, A, and another class B that extends A. They live in separate
files. The logic I need to implement is as follows:
if (class_exists('B')) {
$foo = new B();
}
else {
$foo = new A();
}
That is all well and good if both A and B are already loaded and parsed, but I
am using spl_autoload to lazy-load classes as needed. That means the
class_exists() call will return false if B exists but hasn't been included
yet. What I would like to happen is for PHP to include B if it exists or
give a non-fatal error if it doesn't so that I can instantiate A instead.
Ideally, the logic would be something like the following:
try {
$foo = new B(); // Try to autoload B, throw exception if it can't.
}
catch (ClassDoesntExistEvenAfterRunningThroughAutoloadException $e) {
$foo = new A(); // May autoload A at this point, too.
}
// do stuff with $foo
However, as far as I am aware $foo = new B(); will cause a fatal exception if
autoload doesn't find a B.
Does anyone know of a way to achieve the above effect? This is specifically
for PHP 5.2 and later. Thanks.
--
Larry Garfield
[EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php