如何将变量声明为类的所有方法的全局变量

时间:2014-09-13 09:48:17

标签: php mysql pdo

我正在使用MYSQL PDO进行MYSQL查询,并且我在变量$ db中存储了数据库连接。 在类的方法中使用PDO查询时,我必须在每个类中声明$ db作为全局变量。 有没有办法可以立即将它声明为全局,它适用于所有方法? 以下是我正在做的事情:

 <?php
    class example {
    method 1 {
    global $db;
    other statements
    }
    method 2 {
    global $db;
    other statements
     }
    }
    ?>

以下代码也没有效果。

 <?php
    class example {
    global $db;
    method 1 {
    statements
    }
    method 2 {
    statements
     }
    }
    ?>

1 个答案:

答案 0 :(得分:2)

我建议这样做

<?php
class example {
  protected $db;

  public function __construct(name\space\DB $db) {
    $this->db = $db;
  }

  public function method1() {
    $this->db->query()...
  }

  public function method2() {
    $this->db->query()...
  }
}
?>

将DB类传递给其他类,称为依赖注入。这是一个普遍而良好的惯例。如果您不确定其含义,我强烈建议您阅读。

传入DB类后,我可以将它注册为类示例范围内的属性。然后,这个类中的所有方法都可以使用它。