PHP全局变量或最佳实践

时间:2014-03-19 16:39:37

标签: php laravel laravel-4

我正处于网络开发生涯的婴儿阶段,并且有一个快速的问题。

我有一个变量,我在很多控制器的功能中使用。

$today = new DateTime('today');

我已经读过,声明全局变量是一个很大的不,我想摆脱在每个函数中声明它。

声明此变量并在所有控制器函数中使用它的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

如果这只是您在控制器上使用的内容,则可以在基本控制器中创建它:

<?php

BaseController extends Controller {

    protected $today;

    public function __construct()
    {
        $today = new DateTime('now');
    }

}

MyController extends BaseController {

    public function whatever()
    {
        echo "today: $this->today";
    }

}

如果您在视图中需要这些内容,则可以使用:

View::share('today', new DateTime('now'));

它将适用于您的所有观点:

Today: {{ $today }}

这对我来说没有多大意义,但如果你想在请求之间保留这个变量,你可以使用laravel Session Facade:

Session::put('today', now DateTime('now'));

echo Session::get('today');

除非您确实需要控制会话处理,否则不要使用$_SESSION

答案 1 :(得分:0)

您可以使用$_SESSION变量来存储数据,但仍然可以使用全局。

session_start(); 
$_SESSION['today'] = new DateTime('today');