#40679 [Opn->Bgs]: problems with $class_name in __autoload

From: 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

« previous php.bugs (#109824) next »