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@xxxxxxxxxx> het volgende geschreven: > > > >> -----Original Message----- >> From: Aziz Saleh [mailto:azizsaleh@xxxxxxxxx] >> Sent: Monday, January 13, 2014 3:18 PM >> To: Daevid Vincent >> Cc: php-general@xxxxxxxxxxxxx >> Subject: Re: Fatal error: Cannot re-assign $this -- any plans to "fix" >> this limitation? >> >>> On Mon, Jan 13, 2014 at 5:53 PM, Daevid Vincent <daevid@xxxxxxxxxx> 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 > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php