Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新PHP类外部的类变量_Php_Oop_Class_Variables - Fatal编程技术网

更新PHP类外部的类变量

更新PHP类外部的类变量,php,oop,class,variables,Php,Oop,Class,Variables,我要把它弄得太复杂了,只是把它分解成主要部分 我有一个表单,当表单被提交时,它会更改变量的布尔值,但是它被函数调用,函数必须更改变量 class updates { var $yesno = false; function updateBool() { $this->yesno = true; } } 因此,当表单提交时,它将调用$up->updateBool()将布尔值更改为true。当我做var\u dump($up->yesno)时

我要把它弄得太复杂了,只是把它分解成主要部分

我有一个表单,当表单被提交时,它会更改变量的布尔值,但是它被函数调用,函数必须更改变量

class updates
{
    var $yesno = false;

    function updateBool()
    {
        $this->yesno = true;
    }
}
因此,当表单提交时,它将调用
$up->updateBool()
将布尔值更改为true。当我做
var\u dump($up->yesno)
时,它会在应该是
true
的时候说
false
。如果我这样做:

class updates
{
    var $yesno = false;

    function updateBool()
    {
        $this->yesno = true;
        var_dump($this->yesno); // <-- outputs true
    }
}
这是调用它的代码的一部分。我可以确认SQL语句中有多条记录

class updates
{
    public $yesno;
    function __construct(){
        $this->yesno = false;
    }

    function updateBool()
    {
         $this->yesno = true;
    }
}
因此,当表单提交时,它将调用$up->updateBool()将布尔值更改为true

您似乎正在切换到一个新页面,
$up
将成为一个新对象。对象不会跨请求持久化。当您调用一个新页面时,PHP会“丢失内存”,并且所有变量都是从头开始的


要在页面请求之间持久化值,您需要使用以下内容。

请在返回
false
时显示您正在使用的确切代码,以及您在何时进行var转储?`以及在新代码中的何处进行
var\u转储
?嗯。您的答案似乎合理,我一直认为对象在从一个页面移动到另一个页面后可以在PHP中传递。我会接受你的答案,因为这是一个合乎逻辑的答案。@lolwut会话通常是一种方式,尽管你不应该在会话中放入太多数据。有关持久化对象的高级快速方法,请参见为了传递对象,您需要启动一个会话,然后将该对象分配给会话变量。否则,所有对象只在页面的生存期内存在,并在每次请求页面时重新创建。如果变量/对象是私有的,那么将它们设置为可篡改的会话就不符合逻辑了。@lolwut这是真的,是的。除了巧克力奶油外,饼干里什么都不能储存。美味,美味的巧克力奶油。。。。(流口水)
class updates
{
    public $yesno;
    function __construct(){
        $this->yesno = false;
    }

    function updateBool()
    {
         $this->yesno = true;
    }
}