1

我知道这可能是我迄今为止问过的最愚蠢的问题......但我一直在寻找参考点,并且有很多随机问题,最难找到。我知道它最有可能是语法正确的问题,但对于我的一生,经过多次试验和错误,我知道它可能更容易问......(另外,lastInsertId() 也不是一个可能的解决方案因为还有其他省略的代码)......它是否必须是一个全局变量才能正确返回......据我所知......没有明确

问题:我怎样才能正确地回显这个变量:

回声码

$customer = new SoClassy();
$var1 = "test 1";
$var2= "test 2";
$var3= "test 3";
try {
$customer->add_function($var1,$var2,$var3);
$last_insert_id= $customer->$return_this_variable; 

echo "HERE:  ";
echo $last_insert_id;
}
catch (Exception $e) {
print "Error: " . $e->getMessage();
}

类代码(不同的 *.php)

 function add_function($var1,$var2,$var3)
     {
        $data = array(
            'position_one' => $var1,
            'position_two' => $var2,
            'position_three' => $var3
        );
        try {
            $this->db->insert($this->config->database->tables->table_name, $data);
            $return_this_variable = $this->db->lastInsertId();
       return $return_this_variable;
            }
        catch ...{}
        catch ...{}
    }
4

2 回答 2

2

如果我正确理解了这个问题.. 该函数将返回您想要的值。因此,您将函数调用分配给您的变量:

$last_insert_id = $customer->add_function($var1,$var2,$var3);

于 2013-05-11T23:04:24.033 回答
1

考虑采用一种替代方法来替代向您建议的方法,以防您需要传递其他东西而不仅仅是一个函数结果。

class SoClassy {

protected $itemId;

public function add_function($var1,$var2,$var3)
     {
        $data = array(
            'position_one' => $var1,
            'position_two' => $var2,
            'position_three' => $var3
        );
        try {
            $this->db->insert($this->config->database->tables->table_name, $data);
            $this->itemId = $this->db->lastInsertId();
            }
        catch ...{}
        catch ...{}
    }

}


public function doSomethingElse() {  ... }

public function doItAll($var1,$var2,$var3) {
    $this->add_function($var1,$var2,$var3)
    $this->doSomethingElse();
    return $this->itemId;
}

}

如果您需要在您的方法中执行大量操作,您可能需要使用类似的方法,以避免它成为一个怪物。

您可以在 doSomethingElse 和所有其他类方法中对 itemId(或其他类变量)执行任何操作。基本上,您将所需的所有临时变量保存在一个地方,而不会使它们成为全局变量,从而冒着名称冲突的风险。

于 2013-05-11T23:10:34.613 回答