1

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

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

我尝试将 URL 中的变量作为参数和 SESSION 变量发送,但我收到了一些错误,所以如果您有其他想法,请启发我。

我尝试的所有返回都会给出以下错误消息:
Notice: Undefined variable

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

4

2 回答 2

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

$this->value

会在课堂上给“东西”

在类的构造函数中标记变量并使用它

于 2013-04-16T13:50:54.183 回答
2

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

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

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

这是设计使然。

init()方法在ZF1中用于补充构造函数。这是您添加通常可能放在构造函数中的参数的地方。

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

例如:

//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 应用程序都会从​​头开始运行,因此必须保存(持久化)从一个请求到下一个请求需要保留的任何数据。

于 2013-04-17T09:08:06.243 回答