我正在一个项目中使用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))
);抛出错误。
我真的不确定我错在哪里。
发布于 2013-03-27 07:59:59
static变量只在对象的上下文中有意义。它们在该类型的对象被实际创建(实例化)之前就存在了。
我不完全确定您在这里想要实现什么,但您很可能希望在程序的控制流中的某个点更改变量。为此,您必须在设置该静态变量的值的类中创建并调用一个方法(建议,参见下面的示例代码),或者从您的主代码显式设置它(不建议,还要求您的变量为public)
class Foo
{
static $has_one = 'initial value';
public static function setHasOne($value) {
self::$has_one=$value;
}
}
// main code:
Foo::setHasOne('new value');为了简单起见,我在这里使用了一个字符串变量,但它对数组的作用是一样的。
https://stackoverflow.com/questions/15649396
复制相似问题