ID:               38370
 Comment by:       dkr at mindwerk dot de
 Reported By:      phpbug at trash-mail dot de
 Status:           No Feedback
 Bug Type:         Class/Object related
 Operating System: Windows XP
 PHP Version:      5.1.4
 New Comment:

Well here's my Test-Case for this "bug" ?

<?php
// This Bug testet on PHP 5.1.4 / Win32
header('Content-Type:text/plain');

class Base
{
        function __construct()
        {
        }
}

class DontWork
{
        public $and;
        
        function __construct()
        {
                $this->and = new Base();
        }
        
        function __set($key, $var)
        {
                $this->and->{$key} = $var;
        }

}

$dontwork = new DontWork();
$dontwork->this['cow'] = "cry's mow";
print_r($dontwork);

/** OUTPUT
DontWork Object
(
    [and] => Base Object
        (
        )

    [this] => Array
        (
            [cow] => cry's mow
        )

)
**/

class ThisWork
{
        public $and;
        
        function __construct()
        {
                $this->and = new Base();
        }
        
        function __set($key, $var)
        {
                $this->and->{$key} = $var;
        }

        function __get($key)
        {
                return $this->and->{$key} = array();
        }
}

$thiswork = new ThisWork();
$thiswork->this['cow'] = "cry's mow";
print_r($thiswork);

/** OUTPUT
ThisWork Object
(
    [and] => Base Object
        (
            [this] => Array
                (
                    [cow] => cry's mow
                )

        )

)
**/

?>


Previous Comments:
------------------------------------------------------------------------

[2006-08-16 01:00:00] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

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

[2006-08-13 10:43:01] anything at trash-mail dot de

<?php
class Example {    
    protected $arr; // meant to be an array

    public function __get( $property )
    {
        echo( "Getter for <strong>\$$property</strong> involved when
trying to assign an array element." );
    }
    
    public function __set( $property, $value )
    {
        echo( 'Setter involved.' ); // never executed!
    }
}

$example =& new Example;
$example->arr['test'] = 'any value';
?>

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

[2006-08-08 12:00:20] [EMAIL PROTECTED]

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.



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

[2006-08-07 22:02:07] phpbug at trash-mail dot de

Description:
------------
This issue is related to #24608.

---quote of [EMAIL PROTECTED]:
I have fixed it to give an error in this case and not to do things
which it is not supposed to do.
---

No error is given if a __get method is defined.

Reproduce code:
---------------
$obj->dataarray['field']='...'; /* results in a call to
$obj->__get('dataarray') */

Expected result:
----------------
$obj->__get() should be enabled to receive arrays. Otherwise the docs
should clearly discuss this limitation and recommend an alternative
procedure for overloading properties of type array.



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


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

Reply via email to