PHP中同一个类读取另一个function的变量
程序员文章站
2022-05-23 14:35:18
...
在同一个类中,如何在function A中,调用 function B中的一个变量值来用?
那比如说我A里面要用到 B中的这个值,该怎么办呢 ?
我在类一开始 设置为 public $a; 这样可以吗?
声明成什么? 我声明成 public $a; 然后方法1中按你说的赋值,然后方法2读不到。
如果我这写
然后我页面进来之后是先读function a 然后再读function b呢?
如果我这写
然后我页面进来之后是先读function a 然后再读function b呢?
这和上面的不是一样的嘛,先赋值,再读取
所以,你的基本出发点就是有问题的
如果我这写
然后我页面进来之后是先读function a 然后再读function b呢?
这和上面的不是一样的嘛,先赋值,再读取
刚刚试了这样 然后不知道怎么读了个空值。。
所以,你的基本出发点就是有问题的
我写的是这样,其实我要实现的业务逻辑就是,页面进来后,异步读取a方法,然后我在b方法中又需要a方法中那个值,我不清楚我这样写,能不能达到我在b方法中获取a方法中的值
就是我页面进来 是A方法,,然后异步用的是B方法,这样就是2个不同回话,变量不能互相拿来用的是吗?
回复讨论(解决方案)
不可能!
请认真阅读手册中关于变量的作用域的描述
可以B中的变量定义的时候设为全局变量,或者你可以用其他方法把值返回给A就可以了
同一个类中要实现只能把变量变成这个类的属性来用
同一个类中要实现只能把变量变成这个类的属性来用
那比如说我A里面要用到 B中的这个值,该怎么办呢 ?
不能,作用域限制了。
如果想都可以读取,可以设为类的全局变量。
类中声明一个属性$c 在方法1中赋值$this->c=A;方法2中直接使用$this->c就可以了。一定要先调用方法1才能够赋值
不能,作用域限制了。
如果想都可以读取,可以设为类的全局变量。
我在类一开始 设置为 public $a; 这样可以吗?
类中声明一个属性$c 在方法1中赋值$this->c=A;方法2中直接使用$this->c就可以了。一定要先调用方法1才能够赋值
声明成什么? 我声明成 public $a; 然后方法1中按你说的赋值,然后方法2读不到。
class T { public $v; function B() { $this->v = 123; } function A() { echo $this->v; }}$p = new T;$p->B();$p->A(); //123
class T { public $v; function B() { $this->v = 123; } function A() { echo $this->v; }}$p = new T;$p->B();$p->A(); //123
如果我这写
class T{public $p;function a{$this->p=1;}function b{echo $this->p;}}
然后我页面进来之后是先读function a 然后再读function b呢?
class T { public $v; function B() { $this->v = 123; } function A() { echo $this->v; }}$p = new T;$p->B();$p->A(); //123
如果我这写
class T{public $p;function a{$this->p=1;}function b{echo $this->p;}}
然后我页面进来之后是先读function a 然后再读function b呢?
这和上面的不是一样的嘛,先赋值,再读取
你认为会是什么情况呢?
如果先 A 再 B 的话,怎么体现 在function A中,调用 function B中的一个变量值来用
class T { function B() { return 123; } function A() { echo $this->B(); }}$p = new T;$p->B();$p->A(); //123但这就不是调用 B 中的值了
所以,你的基本出发点就是有问题的
class T { public $v; function B() { $this->v = 123; } function A() { echo $this->v; }}$p = new T;$p->B();$p->A(); //123
如果我这写
class T{public $p;function a{$this->p=1;}function b{echo $this->p;}}
然后我页面进来之后是先读function a 然后再读function b呢?
这和上面的不是一样的嘛,先赋值,再读取
刚刚试了这样 然后不知道怎么读了个空值。。
class T { function B() { return 123; } function A() { echo $this->B(); }}$p = new T;$p->B();$p->A(); //123但这就不是调用 B 中的值了
所以,你的基本出发点就是有问题的
class T{public $p;function a{$this->p=1;}function b{echo $this->p;}}
我写的是这样,其实我要实现的业务逻辑就是,页面进来后,异步读取a方法,然后我在b方法中又需要a方法中那个值,我不清楚我这样写,能不能达到我在b方法中获取a方法中的值
执行 A 和 B 不在同一个 http 会话之中?
那么你这样写就是错误的了!
需要借助其他载体来实现
执行 A 和 B 不在同一个 http 会话之中?
那么你这样写就是错误的了!
需要借助其他载体来实现
就是我页面进来 是A方法,,然后异步用的是B方法,这样就是2个不同回话,变量不能互相拿来用的是吗?
对!不同的会话间是不能共享数据的
所以需要 cookie、session、数据库、文件以及第三方支撑软件