如何设置全局安全 class php

How to setup global secured class php

我正在尝试从另一个 class 中的函数访问 class 中的 public 方法 我有:

主要功能文件

class kernel(){

private $conn;

private function mysqlconnection(){

$conn = new Mysqlconnection(); //Setup connection


}
private function makequery($query){

$this->conn->do_query($query); //do mysql query

}

public function query($query){

//check rank
...
 return $this->makequery($query); //if true do it

}

}

App功能模板文件

Class app{

function __construct($appname){
//Check that this app can get connection (try make query)

$kernel->query($appname); 

}    

    }

$kernel = new kernel ();

$app = new app($appname); //HOW to access another class from class?

我通过调用 class 到 globals

$GLOBALS['kernel'] = new kernel();

在应用程序中 class ...

    Class app{

function __construct($appname){
//Check that this app can get connection (try make query)

$GLOBALS['kernel']->query($appname); 

}    

    }

但是我可以这样做更安全吗?

通过构造函数注入 kernal 的实例

Class app{

    protected $kernal;

    function __construct($appname, $kernal)
    {
        $this->kernal = $kernal //if needed in other methods, save to a property
        $this->kernal->query($appname); 
    }    
}


$kernel = new kernel ();

$app = new app($appname, $kernal);

我是参考函数做的。 前

function ClassName(){
if(!isset($GLOBALS["ClassName"]))
$GLOBALS["ClassName"] = new $GLOBALS["ClassName"];

return $GLOBALS["ClassName"];
}

你可以通过

调用它
ClassName()->query("...");

来自任何地方! :D