Re: [PHP-DEV] Re: bug of the day: $this
On Fri, 2002-12-06 at 22:11, Stig S. Bakken wrote: It won't be different in ZE2. This is not a bug though, but a tricky design issue. The problem is figuring out at runtime when to set $this or not in a method. What most people would probably find intuitive, is that $this was set only in methods called in the object, but this would require pretty expensive checks for every method call. Maybe the roots of OO is my problem. PHP does similar, but not exactly. I don't know whether you like clear things, or is this clear to you, but I see confusion about handling $this. Excerpt from the documentation: http://www.php.net/manual/en/language.oop.php Within a class definition, you do not know under which name the object will be accessible in your program: at the time the Cart class was written, it was unknown that the object will be named $cart or $another_cart later. Thus, you cannot write $cart-items within the Cart class itself. Instead, in order to be able to access it's own functions and variables from within a class, one can use the pseudo-variable $this which can be read as 'my own' or 'current object'. Thus, '$this-items[$artnr] += $num' can be read as 'add $num to the $artnr counter of my own items array' or 'add $num to the $artnr counter of the items array within the current object'. Andi can shed more light on this if needed. Andi, please tell me why. -- jul -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] Re: bug of the day: $this
It won't be different in ZE2. This is not a bug though, but a tricky design issue. The problem is figuring out at runtime when to set $this or not in a method. What most people would probably find intuitive, is that $this was set only in methods called in the object, but this would require pretty expensive checks for every method call. Andi can shed more light on this if needed. - Stig On Wed, 2002-12-04 at 00:25, Markus Fischer wrote: I think issue is/will be adressed in ZendEngine2 but I could be wrong. I suggest inquiring at the engine2 list. On Tue, Dec 03, 2002 at 08:53:25PM +, Ivan Ristic wrote : Balazs Nagy wrote: Hi, $this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] Re: bug of the day: $this
On Wed, 2002-12-04 at 01:32, Balazs Nagy wrote: On Tue, 2002-12-03 at 21:53, Ivan Ristic wrote: Balazs Nagy wrote: Hi, $this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html Now, please tell me how can you decide whether the member function is called as an object element (eg. $obj-func()) or as a class element (eg. class::func()). Basic functionality is killed with this so-called feature. The right way should be a call stack, with for example a $_STACK array, or through stack functions (eg. this_object(), previous_object()). this_object()? LPC? :) - Stig -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] Re: bug of the day: $this
Why do the (cheap) checks implemented in debug_backtrace not work for this? George On Friday, December 6, 2002, at 04:11 PM, Stig S. Bakken wrote: It won't be different in ZE2. This is not a bug though, but a tricky design issue. The problem is figuring out at runtime when to set $this or not in a method. What most people would probably find intuitive, is that $this was set only in methods called in the object, but this would require pretty expensive checks for every method call. Andi can shed more light on this if needed. - Stig On Wed, 2002-12-04 at 00:25, Markus Fischer wrote: I think issue is/will be adressed in ZendEngine2 but I could be wrong. I suggest inquiring at the engine2 list. On Tue, Dec 03, 2002 at 08:53:25PM +, Ivan Ristic wrote : Balazs Nagy wrote: Hi, $this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-DEV] Re: bug of the day: $this
Balazs Nagy wrote: Hi, $this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html -- Ivan Ristic, http://www.webkreator.com -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] Re: bug of the day: $this
I think issue is/will be adressed in ZendEngine2 but I could be wrong. I suggest inquiring at the engine2 list. On Tue, Dec 03, 2002 at 08:53:25PM +, Ivan Ristic wrote : Balazs Nagy wrote: Hi, $this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] Re: bug of the day: $this
On Tue, 2002-12-03 at 21:53, Ivan Ristic wrote: Balazs Nagy wrote: Hi, $this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html Now, please tell me how can you decide whether the member function is called as an object element (eg. $obj-func()) or as a class element (eg. class::func()). Basic functionality is killed with this so-called feature. The right way should be a call stack, with for example a $_STACK array, or through stack functions (eg. this_object(), previous_object()). -- jul -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DEV] Re: bug of the day: $this
$this stays defined when an instantatiated member function calls a non-instantiated member function. Correct. I actually find it quite interesting. :) It can be useful at times, I have used it in my libraries as a feature. There is an interesting article on the subject: http://www.advogato.org/article/470.html Now, please tell me how can you decide whether the member function is called as an object element (eg. $obj-func()) or as a class element (eg. class::func()). You mean from the function itself? You can't, as far as I can tell. That is why this works best if you have a helper class with all static methods. Once nice example that comes to mind is a method that persists objects to the database. But never mind that, I am not trying to justify the existence of this quirk so there is no point in discussing it. Basic functionality is killed with this so-called feature. Although I did use it as such, I wouldn't actually call this a feature, and would prefer to have it removed from ZE2. Bye, Ivan -- PHP Development Mailing List http://www.php.net/ To unsubscribe, visit: http://www.php.net/unsub.php