在同一个类中存储和使用全局变量,但使用php的不同公共函数

时间:2013-04-16 13:48:57

标签: php zend-framework netbeans

我有一个使用php进行netbeans的项目,我正在使用Zend框架,所以它是模型 - 视图 - 控制器。

进入一个类(newclassController),我有4个公共函数。 我想存储第二个函数的全局变量,并将其用于第4个函数

我试图将URL中的变量作为参数和SESSION变量发送,但是我遇到了一些错误,所以如果你有其他的想法,请点击我。

所有我尝试过的返回都会显示以下错误信息:
Notice: Undefined variable

注意:如果我将变量存储在init function中,但是我想将其存储在另一个函数中,则它可以正常工作。

2 个答案:

答案 0 :(得分:2)

public function__constructor(){
$this->value = 'something';
}

$this->value

会在课堂上给出'某事'

在类的构造函数中声明变量并使用它

答案 1 :(得分:2)

除非我在启动值时错过了我的猜测:

public function init(){
    $this->value = 'value';
}

该值可用于控制器中的所有“操作”。

这是设计的。

在ZF1中使用init()方法来补充构造函数。在这里你可以添加通常可以放在构造函数中的参数。

为了持久化从一个动作到另一个动作的值,必须使用某种形式的存储。

例如:

//a verbose example
public function indexAction(){
    //initiate a variable
    $i = 100;
    //start a new session and assign a name to it
    $session = new Zend_Session_Namespace('number');
    //assign the value to the namespace
    $session->value = $i
}

稍后在同一个控制器或甚至另一个控制器

public function newAction(){
    //access the session
    $session = new Zend_Session_Namespace('number');
    //assign the value to the view
    $this->view->value = $session->value;
}

现在在new.phtml视图中

<?php echo $this-value ?>

使用PHP特别是Zend Framework 1时要记住的一件重要事情是,每个请求都运行整个应用程序。

这是一个让我在开始时绊倒的概念。每次请求新页面时,Zend Framework应用程序都是从头开始运行的,因此必须保存(持久化)从一个请求到下一个请求生存的任何数据。