Re: Fatal error: Cannot re-assign $this -- any plans to "fix" this limitation?
| From: | Aziz Saleh | Date: | Mon, 13 Jan 2014 23:18:15 +0000 |
| Subject: | Re: Fatal error: Cannot re-assign $this -- any plans to "fix" this limitation? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-322685@lists.php.net to get a copy of this message | ||
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.