#18864 [Bgs]: Nested Function within a class

From: Date: Tue, 13 Aug 2002 09:42:22 +0000
Subject: #18864 [Bgs]: Nested Function within a class
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-16591@lists.php.net to get a copy of this message
ID: 18864 User updated by: fathireza@yahoo.com Reported By: fathireza@yahoo.com Status: Bogus Bug Type: Class/Object related Operating System: NT2000 PHP Version: 4.2.2 New Comment: Dear Rasmus, This is what I am basically trying to do. If there is anything wrong with this, please let me know. This is what I get Notice: Undefined variable: this in c:\inetpub\wwwroot\phpsite\testthis.php on line 17 Thanks.. R. Fathi <?PHP class A { var $someX; function A($str) { //...... $this->b($str); } function b($num) { $func="c_".$num; $this->someX=1; function c_1() { //Error this variable unknow here print "$this->someX"; } function c_2() { } //.... $func(); } } $foo = new A("1"); ?> Previous Comments: ------------------------------------------------------------------------ [2002-08-13 05:37:04] pguillot@paanjaru.com Sight, I should have read more carefully : I saw nested classes where functions were present. btw, I should have said : Your variable is - recognized only in the function where it is defined - recognized everywhere if it is __global__ - recognized in the class where it's defined Patrick ------------------------------------------------------------------------ [2002-08-13 05:28:42] pguillot@paanjaru.com Dear Fathi, I don't understand clearly what you want to do : Your variable is - recognized only in the function where it is defined - recognized everywhere if it is __global__ It seems you want to create a class-global var ! (Q: in which real case is it useful ? ) Could'nt you pass the var when calling your last function ? Anyhow, thanks to all for the dev, support and use cases ... After so much time using Php, i'm still amazed by it's power and speed (imho). Patrick ------------------------------------------------------------------------ [2002-08-13 04:06:34] rasmus@php.net What are you talking about? Run this: <? class A { var $someX; function b() { } function c() { $this->someX=1; } } $foo = new A; $foo->c(); echo $foo->someX; ?> ------------------------------------------------------------------------ [2002-08-13 04:02:41] fathireza@yahoo.com Well dear rasmus what you said is totally meaningless. Try to access "this" variable in any order of function calling that you wish, but it is not accessible in any case. These comments are worthless and does not solve the scoping problem with php 4.2.2. Thanks.. R. Fathi ------------------------------------------------------------------------ [2002-08-13 03:56:14] rasmus@php.net There is absolutely no difference between: function b() { function c() { } } and: function b() { } function c() { } in terms of their calling scope. They are identical. It's not like function c won't be defined until function b is called in the first case. So what you are doing is meaningless. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/18864 -- Edit this bug report at http://bugs.php.net/?id=18864&edit=1

« previous php.bugs (#16591) next »