Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这是糟糕的编程实践吗?_Php - Fatal编程技术网

Php 这是糟糕的编程实践吗?

Php 这是糟糕的编程实践吗?,php,Php,可能重复: 用以下方式访问类中函数中的全局变量是不是很糟糕的编程(PHP)实践 class test{ function a(){ global $myvar; .. } function b(){ global $myvar; .. } } 谢谢。在我看来是的。您可以始终使用构造函数将全局变量“发布”到方法中,并通过字段保持链接。我认为是这样。您可以使用构造函数将全局变量“发布”到您的方法中,并保持通过字段的链接。在我看来,是的,像您这样使用不是一个好的做法。你可以把这个当作 cla

可能重复:

用以下方式访问类中函数中的全局变量是不是很糟糕的编程(PHP)实践

class test{

function a(){
global $myvar;
..
}

function b(){
global $myvar;
..
}

}

谢谢。

在我看来是的。您可以始终使用构造函数将全局变量“发布”到方法中,并通过字段保持链接。

我认为是这样。您可以使用构造函数将全局变量“发布”到您的方法中,并保持通过字段的链接。

在我看来,是的,像您这样使用不是一个好的做法。你可以把这个当作

class test{
  private $myVar;
  function __construct($myVar)
  {
    $this->myVar = $myVar;
  }
  function a(){
   echo $this->myvar;
   ..
  }
}




class test{
      private $myVar;
      function __construct()
      {
        global $myVar;
        $this->myVar = $myVar;
      }
      function a(){
       echo $this->myvar;
       ..
      }
    }

在我看来,是的,像你那样使用它不是一个好的做法。你可以把这个当作

class test{
  private $myVar;
  function __construct($myVar)
  {
    $this->myVar = $myVar;
  }
  function a(){
   echo $this->myvar;
   ..
  }
}




class test{
      private $myVar;
      function __construct()
      {
        global $myVar;
        $this->myVar = $myVar;
      }
      function a(){
       echo $this->myvar;
       ..
      }
    }

它不优雅。您应该在构造函数中传递该var,并将其保存到类中的
private$var
中,以便在每个函数中使用一个简单的
$this->var

$myUnicorn = "Pink";
class Unicorn {
    private $currentUnicorn;

    public function __construct($current) {
        $this->currentUnicorn = $current;
    }

    public function echoIt() {
        echo $this->currentUnicorn;
    }

    public function killIt() {
        unset($this->currentUnicorn); // :(
    }
}

$u = new Unicorn($myUnicorn);
$u->killIt(); 

它不优雅。您应该在构造函数中传递该var,并将其保存到类中的
private$var
中,以便在每个函数中使用一个简单的
$this->var

$myUnicorn = "Pink";
class Unicorn {
    private $currentUnicorn;

    public function __construct($current) {
        $this->currentUnicorn = $current;
    }

    public function echoIt() {
        echo $this->currentUnicorn;
    }

    public function killIt() {
        unset($this->currentUnicorn); // :(
    }
}

$u = new Unicorn($myUnicorn);
$u->killIt(); 

你不应该做那样的事,除非你必须这样做。如果有更好的方法做这件事是有意义的,那么就使用它。例如,有些人使用它来访问配置变量,但更好的方法是使用
define()
语句或静态类和文件


TL;博士-只有在你必须的时候才做。否则,不要

除非你必须这样做,否则你不应该这样做。如果有更好的方法做这件事是有意义的,那么就使用它。例如,有些人使用它来访问配置变量,但更好的方法是使用
define()
语句或静态类和文件


TL;博士-只有在你必须的时候才做。否则,不要

在我看来,这太糟糕了。使类依赖于外部变量。在不存在此变量的上下文中实例化的对象将无法工作


将变量传递给类的构造函数。这样,只有在提供参数的情况下才能实例化对象。

在我看来,这是非常糟糕的。使类依赖于外部变量。在不存在此变量的上下文中实例化的对象将无法工作


将变量传递给类的构造函数。这样,只有在提供参数的情况下才能实例化对象。

这就是我的意思,谢谢你的示例。这就是我的意思,谢谢你的示例。