同一个类中,一个函数中如何调用另一个函数中的一个变量

时间:2022-09-30 23:58:12
同一个类中,一个函数中如何调用另一个函数中的一个变量?

两个函数中都对这个参数global了也不行。

是不支持这样的调用吗?有没有什么办法?

谢谢

15 个解决方案

#1



class a{
    private $b;
    public function setB($input){
        $this->b = $input;
    }
    public function getB(){
        return $this->b;
    }

}

#2



class a{
    private $var;
    public function a($input){
        $this->var = 'this a';
    }
    public function b(){
        return $this->var;
    }

}

#3


nnd
一不小心用到了var关键字做变量,不好意啊,

#4


如果不public function的话有没有办法做到?

#5


可以,只要在类内部调用

#6


#5如何实现呢?
该如何去声明?

我这怎么public、global都不行啊,唉

#7


呃。。。想到了,是不是因为我类中的两个函数不是在一个页面中调用的缘故呢?

A函数输出form,B函数是form提交后才执行的,是这样是不是用上面的方法也无法得到A函数中变量的值?

纠结。。。

#8


补充下,虽然该参数可以通过form post再来获取,可是我希望能直接利用,不然的话为了防止恶意伪造数据,在后面还要重新对该参数进行校核

如果能直接用的话,安全性就提高很多了。

#9


用require()包含另一个你需要的文件。

#10


你问题的描述前后不一样啊 
按你最开始的描述 那么用1L, 除此以外的话 比如用什么session之类的都应该被看作是对面向对象概念的不理解
按你7L的描述 可以考虑session

#11


不好意思,刚开始没有把需求描述清楚,重新完整描述一下:

有一个类,里面有两个函数,函数A是用来生成输出一个form表单,函数B是接收表单进行处理

其中有一个变量是在函数A中声明并赋值的,现在是想该类中的B函数能直接使用该变量,而不是通过form post过来。

这样的话,因为不是一步同时执行两个函数,而是两个函数分别单独执行,B接收表单的时候会重新实例化类了,用1、2楼的方法就无效了。

或许只能用session了,只是用session的话还不如直接post了,不想通过post的一大原因就是因为post可以伪造,session同样可以。。。

另外说明一点,整个架构执行过程就是这样,是不能更改的,只能是想办法让B函数获得A函数中这个变量的值.

#12


这样不行,除非你就用一个实例,把这个实例定义在一个公共的单元,然后再引用这个单元,上面也有人说了,这样应该能满足你的需求,不要重新实例化,这样就变成两个不同的实例了。

#13


楼主的结贴率的确让人惊奇。呵呵。

#14


对PHP不是很熟悉`MS 在C#中可以的

#15


引用 13 楼 task555 的回复:
楼主的结贴率的确让人惊奇。呵呵。


哈~结帖率:123.81% 我也才发现~

谢谢以上各位了,由于两个函数是分开独立使用而且每次使用前都重新实例化了,只能得到类变量的初始赋值

PHP也是玩不深入,暂时得到这个结论。。。谢谢~如果有解决办法大家再讨论

#1



class a{
    private $b;
    public function setB($input){
        $this->b = $input;
    }
    public function getB(){
        return $this->b;
    }

}

#2



class a{
    private $var;
    public function a($input){
        $this->var = 'this a';
    }
    public function b(){
        return $this->var;
    }

}

#3


nnd
一不小心用到了var关键字做变量,不好意啊,

#4


如果不public function的话有没有办法做到?

#5


可以,只要在类内部调用

#6


#5如何实现呢?
该如何去声明?

我这怎么public、global都不行啊,唉

#7


呃。。。想到了,是不是因为我类中的两个函数不是在一个页面中调用的缘故呢?

A函数输出form,B函数是form提交后才执行的,是这样是不是用上面的方法也无法得到A函数中变量的值?

纠结。。。

#8


补充下,虽然该参数可以通过form post再来获取,可是我希望能直接利用,不然的话为了防止恶意伪造数据,在后面还要重新对该参数进行校核

如果能直接用的话,安全性就提高很多了。

#9


用require()包含另一个你需要的文件。

#10


你问题的描述前后不一样啊 
按你最开始的描述 那么用1L, 除此以外的话 比如用什么session之类的都应该被看作是对面向对象概念的不理解
按你7L的描述 可以考虑session

#11


不好意思,刚开始没有把需求描述清楚,重新完整描述一下:

有一个类,里面有两个函数,函数A是用来生成输出一个form表单,函数B是接收表单进行处理

其中有一个变量是在函数A中声明并赋值的,现在是想该类中的B函数能直接使用该变量,而不是通过form post过来。

这样的话,因为不是一步同时执行两个函数,而是两个函数分别单独执行,B接收表单的时候会重新实例化类了,用1、2楼的方法就无效了。

或许只能用session了,只是用session的话还不如直接post了,不想通过post的一大原因就是因为post可以伪造,session同样可以。。。

另外说明一点,整个架构执行过程就是这样,是不能更改的,只能是想办法让B函数获得A函数中这个变量的值.

#12


这样不行,除非你就用一个实例,把这个实例定义在一个公共的单元,然后再引用这个单元,上面也有人说了,这样应该能满足你的需求,不要重新实例化,这样就变成两个不同的实例了。

#13


楼主的结贴率的确让人惊奇。呵呵。

#14


对PHP不是很熟悉`MS 在C#中可以的

#15


引用 13 楼 task555 的回复:
楼主的结贴率的确让人惊奇。呵呵。


哈~结帖率:123.81% 我也才发现~

谢谢以上各位了,由于两个函数是分开独立使用而且每次使用前都重新实例化了,只能得到类变量的初始赋值

PHP也是玩不深入,暂时得到这个结论。。。谢谢~如果有解决办法大家再讨论