ID: 40775
Updated by: [EMAIL PROTECTED]
Reported By: seanius at debian dot org
-Status: Assigned
+Status: Closed
Bug Type: Documentation problem
Operating System: Debian GNU/Linux
PHP Version: 5.2.1
Assigned To: rquadling
New Comment:
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
Previous Comments:
------------------------------------------------------------------------
[2007-05-14 09:54:33] [EMAIL PROTECTED]
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.
------------------------------------------------------------------------
[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