> -----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