#40679 [Opn->Bgs]: problems with $class_name in __autoload
| From: | helly@php.net | Date: | Sat, 03 Mar 2007 13:39:02 +0000 |
| Subject: | #40679 [Opn->Bgs]: problems with $class_name in __autoload | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-109824@lists.php.net to get a copy of this message | ||
ID: 40679
Updated by: helly@php.net
Reported By: habeck at gmx dot de
-Status: Open
+Status: Bogus
Bug Type: Unknown/Other Function
Operating System: *
PHP Version: 5.2.1
Assigned To: helly
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
Ok read this again. It is all perfectly fine and there is no crash.
There is only an E_ERROR. That is because you explicitly set class name
to '' - RTFM.
Previous Comments:
------------------------------------------------------------------------
[2007-03-03 11:21:24] helly@php.net
The crash is not good but you should really read the documentation.
I'll fix the crash. Not your problem though.
------------------------------------------------------------------------
[2007-03-03 05:08:36] habeck at gmx dot de
There are three files:
autoload-file (test.php):
<?php
function __autoload($class_name)
{
require_once($class_name.'.php');
}
$txt = 'config.xml';
$o = new blah($txt);
$o->sayHallo();
?>
class-file (blah.php):
<?php
class blah {
private $var;
function __construct($var = '')
{
$this->var = simplexml_load_file($var, '',
LIBXML_NOCDATA+LIBXML_COMPACT);
}
function sayHallo()
{
print('hallo world!');
}
}
?>
xml-file (config.xml):
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<config>
<templates>
</templates>
</config>
error comment:
I have tried to find out where the error occurs and it seems that the
empty second parameter in the function call "simplexml_load_file"
overrides the variable value of $class_name.
------------------------------------------------------------------------
[2007-03-01 11:08:45] tony2001@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
------------------------------------------------------------------------
[2007-03-01 10:56:35] habeck at gmx dot de
same error on windows 2003 with apache 2.0.59
------------------------------------------------------------------------
[2007-03-01 10:03:41] habeck at gmx dot de
Description:
------------
I have also problems with __autoload on windows 2003 apache 2.2.4/php
5.2.1. The following function does not what it did in apache 2.0.x and
earlier versions of php:
function __autoload($class_name) {
require_once(KH_APP_LIBPATH.$class_name.'.php');
}
The errormessage:
PHP Fatal error: require_once(): Failed opening required
'D:/xxx/xxx/.php' (include_path='./;D:/xxx/xxx/') in
D:\xxx\xxx\index.php on line 6
So there seems to be no value for $classname.
Reproduce code:
---------------
function __autoload($class_name) {
require_once(KH_APP_LIBPATH.$class_name.'.php');
}
Expected result:
----------------
Opening the classfile: D:/xxx/xxx/blah.php
Actual result:
--------------
PHP Fatal error: require_once(): Failed opening required
'D:/xxx/xxx/.php' (include_path='./;D:/xxx/xxx/') in
D:\xxx\xxx\index.php on line 6
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40679&edit=1