Re: Fatal error: Cannot re-assign $this -- any plans to "fix" this limitation?
| From: | Jasper Kips | Date: | Tue, 14 Jan 2014 19:57:06 +0000 |
| Subject: | Re: Fatal error: Cannot re-assign $this -- any plans to "fix" this limitation? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-322699@lists.php.net to get a copy of this message | ||
Daevid,
Please read this bug report. It explais why you can't do what you want to do.. And, I think it
will not change
Jasper
Verstuurd vanaf mijn iPad
> Op 14 jan. 2014 om 20:26 heeft "Daevid Vincent" <daevid@daevid.com> het
> volgende geschreven:
>
>
>
>> -----Original Message-----
>> From: Aziz Saleh [mailto:azizsaleh@gmail.com]
>> Sent: Monday, January 13, 2014 3:18 PM
>> To: Daevid Vincent
>> Cc: php-general@lists.php.net
>> Subject: Re: [PHP] Fatal error: Cannot re-assign $this -- any plans to "fix"
>> this limitation?
>>
>>> On Mon, Jan 13, 2014 at 5:53 PM, Daevid Vincent <daevid@daevid.com> wrote:
>>>
>>> Are there any plans to fix this "bug" (or add this as a feature depending
>>> on
>>> your POV)
>>>
>>> I have a connection class that uses singletons for each database. We have
>>> replication on our PROD boxes but on our VMs we don't, so the code does a
>>> little magic to determine if it's an INSERT|UPDATE|DELETE|REPLACE and
>> tries
>>> to change to the proper mysql connection (write to master, read from
>> slaves
>>> in the case of PROD and just use the same DB on the VM).
>>>
>>> The problem, and it's quite frustrating considering it doesn't make a lot
>>> of
>>> logical sense why you couldn't do it, is that PHP doesn't allow the
>>> re-assignment of $this. :-\
>>>
>>> Both of these fail (of course)
>>>
>>> $this = Connection::get_instance(self::_determine_RDBMS($mybase[1],
>> true));
>>>
>>> $this = self::$_instance_array[$this->_base];
>>>
>>> It seems that it should be code-wise do-able by simply having the guts of
>>> PHP (the C/C++ code PHP is created with) create a new object - just as it
>>> did when creating $this, then just change the pointer that $this is
>> looking
>>> at to the new object, throw the old object onto the heap for cleanup. Why
>>> is
>>> that so difficult?
>>>
>>>
>>> I don't think so. You can always double check here:
>>
>> https://bugs.php.net/search.php (Type: Feature/Change
>> Request).
>>
>> As to be able to dynamically change $this (which in PHP is a reference to
>> the calling object), I personally do not think it is a good idea.
>> Particularly if more than one person is working on the file/project - you
>> expect $this to be something, have specific methods, but ends up being a
>> different object.
>
> I don’t need it to change to an entirely different object class, just a different instance of
> the same class. I agree that changing $this within itself to something completely foreign would be
> horrible. But changing to a new/different version of the same thing (same methods, etc.) seems
> logical and as illustrated useful.
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>