所以我在一个类中使用一个独立的函数,它使用它所调用的类。这是函数
function catalogProductLink($product_id,$product_name,$categories=true) {
//This is the class that the function is called from
global $STATE;
if ($categories) {
//The $STATE->category_id is the property I want to access, which I can't
if (is_array($STATE->category_id)) {
foreach($STATE->category_id as $cat_id) {
if ($cat_id == 0) continue;
$str .= "c$cat_id/";
}
}
}
$str .= catalogUrlKeywords($product_name).'-p'.$product_id.'.html';
return $str;
}
这是函数调用,它是在$ STATE类中生成的。
$redirect = catalogProductLink($this->product_id, $tempProd->product_name, true, false);
我需要访问的对象是已声明为全局的$ STATE对象。 在此函数调用之前,已经填充了许多公共属性,但是当我查看函数范围内的$ STATE对象时,它会丢失除了一个product_id之外的所有属性。对此函数重要的属性是category_id属性,它是类别ID的数组。
我想知道为什么我无法访问$ STATE对象的所有公共属性以及如何访问它们。
答案 0 :(得分:1)
catalogUrlKeywords()
在做什么?我打赌它会修改$STATE
这听起来像一个可怕的设计BTW。如果global
是框架的组成部分,请运行!
修改
或者您可以添加一个可选参数来获取category_id并完成它。也许不是$categories=true
,而是$categories
取一个category_id数组或零。
function catalogProductLink($product_id,$product_name,$category_ids=0) {