PHP中变量作用域的正确使用

PHP中变量作用域的正确使用,php,variables,global-variables,scope,Php,Variables,Global Variables,Scope,我有一些变量,我需要在比我最初想象的更多的函数中访问它们 在我不断增长的函数列表中,最好的方法是什么 我有点像 $site = 'a'; $admin = 'b'; $dir = 'c'; $ma_plug = 'd'; $base = 'e'; //Etc. 在我的一大把函数中,我几乎需要所有这些。我最初是这样做的 function a(){ global $site, $admin, $dir, $ma_plug, $base; //Write the A functio

我有一些变量,我需要在比我最初想象的更多的函数中访问它们

在我不断增长的函数列表中,最好的方法是什么

我有点像

$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()
如果可能的话

如果这些函数是唯一使用这些变量的函数,那么最好创建一个包含这些变量的本地类

这样,您就不会污染全局名称空间,并且需要在每个函数中使用
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;
       //...
    }
}

类和
$this->
。常数是良好的,但以后无法编辑。如果要添加一个常量(不变)且必须在全局范围内可用的变量,请使用常量。请使用像这样编写的常量,以确保您自己的代码的可读性,因为它们更容易识别。请注意,“坏习惯”与“坏问题”不同。请停止对问题进行否决投票,因为您不喜欢代码,这不是问题投票的目的。如果问问题的人知道如何编写代码,他们就不会问这个问题了。谢谢你,我没有意识到在定义之后他们不能被编辑。这可能是我提到的一些变量的问题got@Neal,这正是他承认现在知道的吗?@h2oooooooahhh我想OP说“可以”我找到了一个关于PHP类的好教程,我相信你是对的——这正是我需要的;谢谢编辑:将在7:)中接受。此外,大多数情况下,与受保护的
变量相比,不需要
专用
变量。您需要支持将来添加的类。