如何在整个班级中创建变量全局变量

时间:2012-02-11 13:46:17

标签: php class

非常简单的问题,是否有可能创建一个从类外部检索的变量,'global'到整个类,这样我就不必在每个方法的开头调用'global $ variable' ?

这就是我目前正在做的事情:

class test{
    public function testing(){
        global $globalVariable,

        // Do something
    }
    public function testing_two(){
        global $globalVariable,

        // Do something
    }
}

换句话说,我可以将变量导入构造函数中,从而使整个类可以访问它们而不必为每个方法调用“global”吗?

更新

我不确定自己是否已经明确表达了自己希望实现的目标。请参阅以下内容:

$globalVariable = 'hello';

class test{
    public function testing(){
        global $globalVariable,

        // Do something
    }
    public function testing_two(){
        global $globalVariable,

        // Do something
    }
}

4 个答案:

答案 0 :(得分:10)

要清除如何操作:

你很可能想做这样的事情 include('database.php');。在那一点上,你所包含的一切都是你脚本的全局。现在,如果您有类似上面的类,则添加构造函数:

class testclass
{
    private $db;

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

    public function yourmethod()
    {
       $this->db->prepare(); // And so on
    }
}

假设您的全局变量在全局范围内称为$ db。您现在可以使用new testclass($db);构建对象。现在,在所有方法中使用$this->db时,无需使用全局语句。

答案 1 :(得分:2)

将该变量作为类的属性传递

class test
{
    private $globalVariable = '';

    public function testing()
    {
        $this->globalVariable = 'set-som-value';
    }

    public function testing_two()
    {
        $this->globalVariable = 'Do Extra Work';
    }
}

您可以使用私有公开受保护等字词更改变量可见性,其中private使变量只能访问该类,protected使变量在扩展该特定类的类中可用,而public使变量可以从任何地方访问。

全球课外

global $globalVar;
$globalVar = 'SomeVal';

class test
{
    public function testing()
    {
        global $globalVar;
    }
}

答案 2 :(得分:2)

只需使用参考:

class test{
    private $myvar;

    //use __ or old syntax to your liking
    function test() {
        global $globalVariable;
        $myvar =& $globalVariable;
    }

    public function testing(){
        //Use $this->myvar

        // Do something
    }
    public function testing_two(){
        //USe $this->myvar

        // Do something
    }
}

答案 3 :(得分:0)

这可能会有所帮助。我在课堂外有一个var用于mysqli。

             <?php
             $DB_NAME = 'database';
             $DB_HOST = 'host';
             $DB_USER = 'user';
             $DB_PASS = 'password';

             $linkID = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

             if (mysqli_connect_errno()) {
                  printf("Connect failed: %s\n", mysqli_connect_error());
                  exit();
             }


             $Test = new Test($linkID);


                 class Test {

                     public $linkID;

                     function __construct($linkID){ $this->linkID = $linkID; }

                     public function new_mysql($sql) {
                         $result = $this->linkID->query($sql) or die($this->linkID->error.__LINE__);
                         return $result;
                     }

                     public function do_query() {
                         $sql = "SELECT `name` FROM `contacts`";
                         $result = $this->new_mysql($sql);
                         while ($row = $result->fetch_assoc()) {
                             print "Test $row[name]<br>";
                         }
                      }
                 }

         ?>

现在,数据库详细信息将作为帮助程序传递给类。希望这会有所帮助。