RE: Fatal error: Cannot re-assign $this -- any plans to "fix" this limitation?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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






[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux