访问cakephp中的静态变量

时间:2014-11-30 13:05:35

标签: php cakephp

Cakephp V2.6

在我目前的项目中,我试图利用一些面向对象的功能。在我的模型中,modelX我创建了一个自定义查找方法,以特定方式检索结果。然后我将此数组返回到控制器并将其提供给视图。

我正在实现一个excel插件来导出数据,并且有问题的数据与呈现给视图的数据相同。 在我的自定义查找中,在将结果返回给控制器之前,我将结果分配给模型中的静态变量。 当我单击我的导出按钮时,我想使用控制器调用modelX方法来返回可以传递给我的插件以导出数据的静态数组。但是,我似乎无法做到这一点。我已经尝试在类中声明一个静态变量,但它不起作用。我已尝试在其指定的方法中调用global变量,但它不起作用。到目前为止,我找到的唯一方法是将变量写入会话,然后我可以随时随地访问该会话。虽然这确实有效,但我认为这是无效的。我不认为每次呈现视图时都会向会话写一个大数组,因为并不总是需要它。

在蛋糕中是否有办法将数据分配给在对象实例外部可用的模型中的变量,这样我就能做到这一点?

1 个答案:

答案 0 :(得分:1)

在MyModel中:

public static $x = array('a' => 'b');

在控制器中:

$y = MyModel::$x;

引自php documentation

  

与任何其他PHP静态变量一样,静态属性可能只是   使用文字或常量初始化;表达式是不允许的。   因此,您可以将静态属性初始化为整数或数组   (例如),你可能不会将它初始化为另一个变量,也就是a   函数返回值,或对象。

在返回静态数组之前需要执行某些表达式时使用静态方法。在模型中:

public static function getX() {
    $a = array('a' => 'b');
    $b = array('c' => 'd');
    return array_merge($a, $b);
}

在控制器中:

$y = MyModel::getX();