Edit report at https://bugs.php.net/bug.php?id=60452&edit=1

 ID:                 60452
 User updated by:    kashpur dot kostya at gmail dot com
 Reported by:        kashpur dot kostya at gmail dot com
 Summary:            redefine __toString
-Status:             Feedback
+Status:             Open
 Type:               Bug
 Package:            *General Issues
 Operating System:   Windows7
 PHP Version:        5.3.8
 Block user comment: N
 Private report:     N

 New Comment:

<?php
class File extends \SplFileInfo
{
    public function __construct($file)
    {
        parent::__construct($file);
    }

    public function __toString()
    {
         return 'It`s a file';
    }
}

final class A
{
    private $_file;

    public function __construct(File $file)
    {
        $this->_file = $file;
    }

    public function __toString()
    {
        return $this->getFile() . '-magic';
    }

    public function getFile()
    {
        return $this->_file;
    }
}

$a = new A(new File('file_name.php'));
print $a;

?>

*************************************
Actual result:
--------------
file_name.php-magic

Maybe the trick is in this magic '-magic'
Sorry for taftologiya

If I removes '-magic' string PHP would show me "Catchable fatal error: Method 
A::__toString() must return a string value in..."

And with magic it would call \SplFileInfo::__toString() not File::__toString()

Expected result:
----------------
It`s a file

p.s. hope this code is enoughе to properly diagnose the problem


Previous Comments:
------------------------------------------------------------------------
[2011-12-07 02:40:59] larue...@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.

I can not reproduce what you described with following assuming script:
<?php
class A extends \SplFileInfo
{
    public function __toString()
    {
        return 'it`s A';
    }
}


$l = new A(PHP_SELF);

echo $l;

------------------------------------------------------------------------
[2011-12-06 21:28:35] kashpur dot kostya at gmail dot com

Description:
------------
I can`t redefine __toString

Test script:
---------------
class A extends \SplFileInfo
{
...
   public function __toString()
   {
       return 'it`s A';
   }
...
}



Expected result:
----------------
it`s A

Actual result:
--------------
path/to/the/file.php


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60452&edit=1

Reply via email to