Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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_Doctrine - Fatal编程技术网

Php 条令记录的范围是什么?

Php 条令记录的范围是什么?,php,doctrine,Php,Doctrine,我正在调查一个bug,在返回记录对象时,条令似乎不尊重变量作用域的概念 <?php class Thing { var $variable; public function doStuff() { $thing1 = self::getById(1); echo($thing1->variable); $thing1->variable = "new value"; Thing::doSome

我正在调查一个bug,在返回记录对象时,条令似乎不尊重变量作用域的概念

<?php

class Thing {
    var $variable;

    public function doStuff() {
        $thing1 = self::getById(1);
        echo($thing1->variable); 
        $thing1->variable = "new value";
        Thing::doSomeOtherStuff();
        echo($thing1->variable);
    }

    public static function doSomeOtherStuff() {
        $thing2 = Thing::getById(1);
    }

    /**
     * this runs a query against a database and 
     * returns a Thing object with $variable = "old value" 
     */ 
    public static function getById($id): Thing {
        return Doctrine_Query::CREATE()
            ->select('t.*')
            ->from('Thing t')
            ->where('t.id = ?', $id) 
            ->fetchOne([], Doctrine_Core::HYDRATE_RECORD);
    }
}
实际产量:

old value 
old value 
使用
水合物_数组
时不会发生奇怪行为。在创建
$thing2
时,使用调试器似乎正在实际更新
$thing1
的值


我非常想知道为什么会发生这种情况,为什么这种行为是可取的

你给自己制造了一个相当复杂的问题。您的示例代码不完整,但是,它不起任何作用。你能完成它,告诉我们你得到了什么输出,以及你期望的输出吗?我所要求的是对KIKOSoftware的不完整性表示抱歉。我很难思考如何创建更完整的回购协议,除了用轻量级应用程序和引导数据库脚本来构建回购协议。你能给我指出一些SQL数据库支持的问题的例子吗?让我这样说:我可以看到字符串
“新值”
来自哪里,但我不知道
“旧值”
来自哪里?这是来自条令质疑吗?类的方法按什么顺序调用?提示:我认为这与数据库调用没有任何关系,因此当您将该调用替换为:
return“value set in getById($id)”时,就可以完成您的示例
old value 
old value