Hello all,
Recently I had some problems with include/include_once.

This is the scenario:

My application uses only classes loaded through a centered __autoload()
function (no "require/include" anywere in the scripts, but in __autoload()
itself).

Now, diverse libraries use diverse extensions. For instance, Smarty class is
declared in Smarty.class.php. And many of my classes uses a simple .php
extension.

So, __autload has to *try* include_once's. Something like that:

function __autoload($className) {
 include_once("${className}.php");
 if(class_exists($className, false)) return;

 include_once("${className}.class.php");
 if(class_exists($className, false)) return;

 die("class not found: $className");
}

Then, loading Smarty would generate a warning message because the first
include_once tries to load Smarty.php (wich doesn't exists). 

Since those warning messages are common, naturaly I use @include_once
statements. 

But, as soon as I'm writing scripts, and one of the classes included
generates an E_PARSE error, I get a blank result in my browser, because @
supress the messages. 

Having explained the problem, I would like to know:

1: Is there an elegant way to resolve this?

2: What happened to php_check_syntax?

3: What was the final word about include() behavior regarding E_PARSE error?
Reading and searching the bug database, I read some posts that seemed to
indicate that include() should *not* halt on E_PARSE errors, but then, php5
does halt the execution. 

4: Halting the execution on E_PARSE error generated through an include() is
a coherent/expected behavior? (it doesn't seem to me). 

5: Why? (depending on the answer to that question, I'll head to
bugs.php.net).

Thanks,
Thiago

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to