1

我在一个项目中使用 phpactiverecord ( http://www.phpactiverecord.org/ )。

我定义了以下关系。反正有没有将变量传递给它,以便我可以language_id即时更改?

static $has_one = array(
  array(
    'language', 
    'class_name' => 'Pages_lang', 
    'conditions' => array('language_id=1')
  )
);

我查看了文档,看来您可以这样做:

static $has_one = array(
  array('language', 
    'class_name' => 
    'Pages_lang', 
    'conditions' => array('language_id=?','1'))
);

但是传递一个变量:

static $has_one = array(
  array('language', 
    'class_name' => 
    'Pages_lang', 
    'conditions' => array('language_id=?',$language_id))
);

引发错误。

我不确定我哪里出错了。

4

1 回答 1

0

static变量仅在对象的上下文中才有意义。它们在实际创建(实例化)该类型的对象之前就已经存在。

我不完全确定你想在这里实现什么,但你很可能想在程序控制流中的某个点更改变量。为此,您必须在类中创建并调用设置该静态变量值的方法(建议,请参见下面的示例代码)或从主代码中显式设置它(不建议,还需要您的变量是public)

class Foo
{
    static $has_one = 'initial value';

    public static function setHasOne($value) {
        self::$has_one=$value;
    }
}

// main code:
Foo::setHasOne('new value');

为了简单起见,我在这里使用了一个字符串变量,但它与数组的工作方式相同。

于 2013-03-26T23:59:58.873 回答