Php 如何将变量的作用域限制为单个文件?

Php 如何将变量的作用域限制为单个文件?,php,Php,我有几个函数共享公共变量。但我不想一直在所有函数之间传递这些变量,因为这意味着所有函数都有很多参数,我发现很难读取 所以我只想为这些函数定义“全局”变量,比如: $varA; $varB; $varC; function funcA() { .. } function funcB() { .. } function funcC() { .. } 与funcA声明变量和函数的丑陋方式相反,funcA在变量和函数之间传递变量和函数(导致每个函数都有许多参数) 但是,我

我有几个函数共享公共变量。但我不想一直在所有函数之间传递这些变量,因为这意味着所有函数都有很多参数,我发现很难读取

所以我只想为这些函数定义“全局”变量,比如:

$varA;
$varB;
$varC;

function funcA() {
    ..
}

function funcB() {
    ..
}

function funcC() {
    ..
}
与funcA声明变量和函数的丑陋方式相反,funcA在变量和函数之间传递变量和函数(导致每个函数都有许多参数)

但是,我希望变量不是程序中所有文件的全局变量。仅可在此文件中访问


实现这一点的最佳或最常见的方法是什么?

我将创建一个类,并将函数重构为方法,将变量重构为参数:

Class newClass
{
    private $varA;
    private $varB;
    private $varC;

    public function funcA()
    {
        $varB = $this->varB;
    }

    public function funcB()
    {
        $varC = $this->varC;
    }

    public function funcC()
    {
        $varA = $this->varA;
    }

}
Class newClass
{
    public function __construct($varA, $varB, $varC)
    {
        $this->varA = $varA;
        $this->varB = $varB;
        $this->varC = $varC;
    }
}
这样,您就可以完全访问所有后续方法中的所有设置参数。您可以编写setter或创建构造函数来为参数添加值:

Class newClass
{
    private $varA;
    private $varB;
    private $varC;

    public function funcA()
    {
        $varB = $this->varB;
    }

    public function funcB()
    {
        $varC = $this->varC;
    }

    public function funcC()
    {
        $varA = $this->varA;
    }

}
Class newClass
{
    public function __construct($varA, $varB, $varC)
    {
        $this->varA = $varA;
        $this->varB = $varB;
        $this->varC = $varC;
    }
}

这就是我处理局部范围的方式。祝你好运

封装依赖于这些变量的变量和函数的正确方法是使用类

class MyClass
{
    private $varA;
    private $varB;
    private $varC;

   public function __construct($varA, $varB, $varC)
   {
       $this->varA = $varA;
       $this->varB = $varB;
       $this->varC = $varC;
   }

    public function funcA()
    {
        $localVarB = $this->varB;
    }

    public function funcB()
    {
        $localVarC = $this->varC;
    }

    public function funcC()
    {
        $localVarA = $this->varA;
    }    
}
要使用此类,必须首先创建其实例:

$classInstance = new MyClass("varA", "varB", "value");
$classInstance->funcA();
$classInstance->funcB();
...

有关php中类的更多信息,请参见此处:

如果您不想真正构建对象,而只想拥有一个私有作用域,则可以使用静态类:

<?php

class Example {
    private static $shared_variable;

    /* disable the constructor to create a static class */
    private function __construct() {}

    static function funcA() {
        self::$shared_variable = 'AVAILABLE HERE';
    }

    static function funcB() {
        echo self::$shared_variable;
    }
}

Example::funcA();
Example::funcB();

// echo Example::$shared_variable; // but not here

每个实例将有不同的变量(如果一个实例更改了一个变量)或必须移交实例,而每个实例将有不同的变量(如果一个实例更改了一个变量)或必须移交实例这就是目的所在。您对更改其状态的对象执行所有操作,然后检索值。在我的示例中,只创建了一个实例,因此没有其他实例可以具有不同的状态。就我个人而言,如果可能,我会避免使用静态变量和方法。我同意。但是当一个人想要创建一个共享范围时,我认为这是一个合理的选择。你有什么建议?只创建一个非静态对象,甚至是单态对象?