php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #81224 Failed to load a class with '__toString' in required script
Submitted: 2021-07-05 15:46 UTC Modified: 2021-07-23 09:30 UTC
From: wxiaoguang at gmail dot com Assigned:
Status: Duplicate Package: Scripting Engine problem
PHP Version: 8.0.8 OS: Debian
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: wxiaoguang at gmail dot com
New email:
PHP Version: OS:

 

 [2021-07-05 15:46 UTC] wxiaoguang at gmail dot com
Description:
------------
PHP 7 can run these scripts correctly.

PHP 8 reports error if the class has a `__toString` method.


Test script:
---------------
a.php:
<?php
require 'b.php';

class C
{
    // with this __toString method, 'b.php' can not find clas C
    public function __toString() { return ''; }
}

function test()
{
    return new C();
}
?>


b.php:
<?php
var_dump(test());
?>


Expected result:
----------------
Script can run without error.

Actual result:
--------------
PHP Fatal error:  Uncaught Error: Class "C" not found in /home/test/a.php:12
Stack trace:
#0 /home/test/b.php(2): test()
#1 /home/test/a.php(2): require('/home/test/b.ph...')
#2 {main}
  thrown in /home/test/a.php on line 12


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-07-23 08:51 UTC] lufei@php.net
-Status: Open +Status: Verified
 [2021-07-23 08:51 UTC] lufei@php.net
see https://3v4l.org/CcIbq
 [2021-07-23 09:30 UTC] nikic@php.net
-Status: Verified +Status: Duplicate
 [2021-07-23 09:30 UTC] nikic@php.net
Duplicate of bug #79350. __toString() prevents early binding since PHP 8.0.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jan 02 12:01:29 2025 UTC