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