在Yii框架中设置公共类属性

时间:2011-05-27 09:10:44

标签: php oop yii

在控制器(这是一个名为MessageController的类)中,有这个代码,它呈现一个名为helloWorld的“视图”文件,并设置一个数组,其中变量$ theTime连接到键'time'。

$theTime = date("D M j G:i:s T Y"); 
$this->render('helloWorld',array('time'=>$theTime));

在视图helloWorld文件中,来自控制器的关键'时间'通过变量$ time

显示在此处
<h3><?php echo $time; ?></h3>

这完美无缺。然而,这本书也建议尝试另一种方式。它说

  

通过定义来改变前面的例子   一个公共类属性   MessageController,而不是一个   本地范围的变量,其值   是当前的日期和时间。然后   在视图文件中显示时间   通过访问此类属性   $这

我无法弄清楚如何做到这一点。任何人都知道如何

4 个答案:

答案 0 :(得分:3)

class MessageController {
  public $time;

  public function beforeAction($action) {
    $this->time = date("D M j G:i:s T Y");
    return true;
  }

  public function someAction() {
    $this->render('helloWorld');

在视图中:

echo $this->time;

答案 1 :(得分:0)

   // I defined $MyClassTime as a public class variable in "MessageController.php" 
    //as follows:

    class MessageController extends Controller
    {
        public $MyClassTime;

        public function actionHelloWorld()
        {
            $this->MyClassTime = "From Public Class Property: " . date("D M j G:i:s T Y");      

            $this->render('helloWorld');

        }

        public function actionIndex()
        {
            $this->render('index');
        }

    // And then did this in "helloWorld.com":

        <?php
        $this->breadcrumbs=array(
            'Message'=>array('message/index'),
            'HelloWorld',
        );?>
        <h1>Hello, World!!</h1> 
        <h3><?php echo $this->MyClassTime; ?></h3>

答案 2 :(得分:0)

在controllers / MessageController.php文件中

    class MessageController extends Controller
    {
       public $theTime;

       public function init()
       {
           $this->theTime = date("D M j G:i:s T Y");
       }

       public function actionHelloWorld()
       {
           $this->render('helloWorld',array('time'=>$this->theTime));
       }
     }

在views / message / helloWorld.php

    <h3><?php echo $time; ?></h3><hr/>

答案 3 :(得分:0)

好的,书中的指令专门描述:“通过在MessageController上定义公共类属性来改变前面的例子......然后通过$ this访问这个类属性,在视图文件中显示时间。” / p>

话虽这么说,这就是我想出来的:

在MessageController.php中:

            class MessageController extends Controller
            {
                public $defaultAction = 'hello';
                public $theTime; // as per book's instructions

                public function actionHello()
                {
                    $this->theTime = date("D M j G:i:s T Y");
                    $this->render('hello');
                }

在protected / views / message / hello.php中:

            <h1>Hello, World!</h1>
            <h3>
            <?php echo $this->theTime; ?>
            </h3>

它适用于我,我理解代码中发生了什么。作为一个新手,这很重要:要知道你在做什么并实施它。