Edit report at http://bugs.php.net/bug.php?id=31562&edit=1
ID: 31562
Comment by: liujingfeng at snda dot com
Reported by: aalbre99 at student dot hia dot no
Summary: __autoload() problem with static variables
Status: Closed
Type: Bug
Package: Scripting Engine problem
Operating System: *
PHP Version: 5.*
Assigned To: helly
Block user comment: N
Private report: N
New Comment:
I get the same bug. My php ver is 5.2 .
Previous Comments:
------------------------------------------------------------------------
[2005-03-10 03:34:35] helly@php.net
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
------------------------------------------------------------------------
[2005-03-06 22:59:09] aalbre99 at student dot hia dot no
Sorry.
Replaced all my PHP files with the files in
http://snaps.php.net/win32/php5-win32-latest.zip.
Still same error...
(I'am using the built-in IIS in Windows XP SP2)
-------------------------
Output from 'test.php':
-------------------------
Fatal error: Class 'TestClass' not found in
C:\_ECLIPSE_\test\other\Other.php on line 5
------------------------------------------------------------------------
[2005-02-28 21:02:08] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
------------------------------------------------------------------------
[2005-01-15 13:51:02] aalbre99 at student dot hia dot no
I have created an application which reproduces the error. And now I see
that the error is caused by something other than I thought in the
beginning...
Put the following files in the following folder structure, and load
'test.php'...
/test.php
/class_files/ErrorHandler.php
/class_files/TestClass.php
/other/Other.php
#test.php#
<?php
function __autoload($className) {
require_once("class_files/" . $className . ".php");
}
//Uncoment this line to bypas the bug...
//require_once("class_files/TestClass.php");
class Test
{
public function Test()
{
$errorHandler = new ErrorHandler();
require_once("Other/Other.php");
$other = new Other();
}
}
$test = new Test();
?>
#TestClass.php#
<?php
class TestClass
{
public static $staticVar;
public function TestClass()
{
//Set ErrorHandler
set_error_handler(array($this, 'handlePhpError'));
}
}
?>
#ErrorHandler.php#
<?php
class ErrorHandler
{
public function ErrorHandler()
{
error_reporting(E_ALL);
set_error_handler(array($this, 'handlePhpError'));
}
public function handlePhpError($type, $msg, $file, $line)
{
$myVar = TestClass::$staticVar;
echo "Error!";
}
}
?>
#Other.php#
<?php
class Other
{
//Produces warning!
var $temp = 'temp';
public function Other() {}
}
?>
------------------------------------------------------------------------
[2005-01-15 13:06:37] aalbre99 at student dot hia dot no
YES. I managed to reproduce the error in my PHP application!
(One line was changed...)
I will now try to make a test application I can post here which
generates the same error... Stay tuned...
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/bug.php?id=31562--
Edit this bug report at http://bugs.php.net/bug.php?id=31562&edit=1