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