|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-03-11 12:20 UTC] 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 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 15:00:02 2025 UTC |
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.