#40679 [Fbk->Opn]: problems with $class_name in __autoload
| From: | habeck at gmx dot de | Date: | Sat, 03 Mar 2007 05:08:37 +0000 |
| Subject: | #40679 [Fbk->Opn]: problems with $class_name in __autoload | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-109814@lists.php.net to get a copy of this message | ||
ID: 40679
User updated by: habeck at gmx dot de
Reported By: habeck at gmx dot de
-Status: Feedback
+Status: Open
Bug Type: Unknown/Other Function
Operating System: windows 2003 / apache 2.2.4
PHP Version: 5.2.1
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[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