2014-03-19 67 views
0

我處於我的網絡發展事業的嬰兒階段,並有一個快速的問題。PHP全球變量或最佳實踐

我有一個變量,我用了很多控制器的函數。

$today = new DateTime('today'); 

我讀過,聲明全局變量是一個很大的不不,我想擺脫必須在每個函數中聲明它。

聲明這個變量並在所有控制器函數中使用它的最好方法是什麼?

+0

這個變量的上下文是什麼?我很難成像這些數據。 – Brad

+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::put('today', now DateTime('now')); 

echo Session::get('today'); 

不要使用$_SESSION,除非你真的需要控制會話處理。

+0

View :: share方法正是我所期待的。非常感謝! – cmill02s

0

您可以使用$_SESSION變量來存儲數據,並仍然具有全局使用。

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

你有沒有聽說過Laravel的Session Facade?除非需要控制會話處理,否則不應在Laravel應用程序中使用'$ _SESSION'。 http://laravel.com/docs/session –