2013-01-03 89 views
4

我有一些變量需要在比我最初想象的功能更多的功能中訪問。正確使用PHP中的變量範圍

將他們納入我越來越多的功能列表中的最佳方式是什麼?

我有類似

$site = 'a'; 
$admin = 'b'; 
$dir = 'c'; 
$ma_plug = 'd'; 
$base = 'e'; 
//Etc. 

我需要的幾乎所有的在一個大的少數我的功能。我最初是在做

function a(){ 
    global $site, $admin, $dir, $ma_plug, $base; 
    //Write the A function 
} 
function b(){ 
    global $site, $admin, $dir, $ma_plug, $base; 
    //Write the B function 
} 

這很棒,直到我意識到我有更多的功能寫入比我最初的想法。

將所有這些變量納入(幾乎)每個函數的範圍的最佳方法是什麼?就像我所做的一樣?或者像使用常量?如果可能的話,我想盡量避免使用session()

+3

類和'$這個 - >'。常量是好的,但不能在之後編輯。如果要添加一個常量變量(不會更改),並且**具有**可在全局範圍內可用,請使用常量。請使用常量WRITTEN_LIKE_THIS來提高您自己的代碼的可讀性,因爲它們更容易被發現。 – h2ooooooo

+5

請注意,「不良做法」與「不良問題」不一樣。請停止downvoting問題,因爲你不喜歡代碼,這不是問題投票的目的。如果問問題的人知道如何編寫代碼,他們不會問這個問題。 – DaveRandom

+0

謝謝你 - 我沒有意識到定義後不能編輯它們。這可能是我得到的一些變數 – Xhynk

回答

6

如果這些函數是唯一使用這些變量的函數,那麼最好創建一個類,其中這些變量是局部的。

這樣你就不會污染全局名稱空間,並且需要在每個函數中使用關鍵字global

例如:

class MySite { 
    private $site; 
    private $admin; 
    private $dir; 
    private $ma_plug; 
    private $base; 

    function __construct($site, $admin, $dir, $ma, $base) { 
     $this->site = $site; 
     $this->admin = $admin; 
     //... 
    } 
} 
+0

我找到了一個很好的教程在PHP類,我相信你是對的 - 正是我所需要的;謝謝! **編輯**:將接受在7 :) – Xhynk

+0

@快車沒有問題^ _^ – Neal

+1

此外,大多數時間'私人'變量不需要像'受保護的'變量一樣多。你需要支持未來的課程增補。 – Xeoncross