ID:               40775
 Updated by:       [EMAIL PROTECTED]
 Reported By:      seanius at debian dot org
-Status:           Open
+Status:           Assigned
 Bug Type:         Documentation problem
 Operating System: Debian GNU/Linux
 PHP Version:      5.2.1
-Assigned To:      
+Assigned To:      rquadling
 New Comment:

The manual stages that using auto_prepend_file/auto_append_file are
allowed in interactive mode:

"Files included through auto_prepend_file and auto_append_file are
parsed in this mode but with some restrictions - e.g. functions have to
be defined before called."

So, I have an __autoload() function in a file which is included in my
auto_prepend_file entry.

php -a
<?php
echo ini_get('auto_prepend_file'), PHP_EOL,
function_exists('__autoload') ? 'Found loader' : 'No loader', PHP_EOL;
$obj_DB = new class_DB();
?>

results in 

2007/05/14 10:51:34 C:\>php -a
Interactive mode enabled

<?php
echo ini_get('auto_prepend_file'), PHP_EOL,
function_exists('__autoload') ? 'Found loader' : 'No loader', PHP_EOL;
auto_loader.php
Found loader
$obj_DB = new class_DB();

Fatal error: Class 'class_DB' not found in C:\- on line 3

2007/05/14 10:51:35 C:\>?>
The syntax of the command is incorrect.

2007/05/14 10:51:35 C:\>

So.

I'll document this in the "Autoloading objects" page and in
"-a"/interactive shell page.


Previous Comments:
------------------------------------------------------------------------

[2007-04-26 09:16:37] [EMAIL PROTECTED]

Yes, __autoload() can not be invoked when compiling because compiler is
not reentrant (and interactive mode means we're always compiling).
Reclassified as docu problem.

------------------------------------------------------------------------

[2007-03-11 12:20:45] seanius at debian dot org

Description:
------------
the __autoload hook doesn't seem to be run for the cmdline/cgi versions
 of php when invoked in "interactive" (-a) mode.

originally reported at http://bugs.debian.org/406264

Reproduce code:
---------------
<?php
function __autoload($class)
{
echo $class;// should output class name
echo 'lol';// should at least print it if it comes into function body
require($class . '.php');// should break script because of missing
file
}
// but it will just cause fatal error about missing class :|
$foo = new Bar(); ?>

Expected result:
----------------
client-158[~]13:14:49$ php < foo.php
Barlol
Warning: require(Bar.php): failed to open stream: No such file or
directory in - on line 6

Fatal error: require(): Failed opening required 'Bar.php'
(include_path='.:/usr/share/php:/usr/share/pear') in - on line 6



Actual result:
--------------
client-158[~]13:14:54$ php -a < foo.php
Interactive mode enabled


Fatal error: Class 'Bar' not found in - on line 9


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=40775&edit=1

Reply via email to