我有一个名为DBhelper的类,现在我创建了一个名为UserManager的新类.我需要UserManager具有GetUserId()和CheckValidation()等功能.所以我需要DBhelper来处理这些数据库操作.但我发现它不能像这样工作:
require_once('DBhelper.php');
class User{
public $databaseHelper = new DBhelper();//syntax error
public $DB = $databaseHelper->connectDB();//syntax error
public function GetUserId(){
$this->databasesHelper->RunSql();//syntax error
...
}
public function CheckValidation(){
$this->databasesHelper->RunSql();//syntax error
...
}
}
Run Code Online (Sandbox Code Playgroud)
请停下来,我已经在互联网上搜索了很长时间.谢谢.
尝试这样的东西,它使用依赖注入设计模式.
class User {
private $db;
public function __construct(DBHelper $db) {
$this->db = $db->connectDB();
}
public function GetUserId(){
$this->db->RunSql();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是如何实例化它:
// Assuming: require( 'DBhelper.php');
$dbh = new DBHelper();
$user = new User( $dbh);
Run Code Online (Sandbox Code Playgroud)
此外,要触摸您的错误,这些都是错误(注意它们不是语法错误,因为它们在语法上是正确的):
public $databaseHelper = new DBhelper();//syntax error
public $DB = $databaseHelper->connectDB();//syntax error
Run Code Online (Sandbox Code Playgroud)
因为您无法将成员变量初始化为非静态值.因此,由于在编译时不知道这些值,所以这是一个错误.
同样,这些电话:
$this->databasesHelper->RunSql();//syntax error
Run Code Online (Sandbox Code Playgroud)
是无效的,因为$databasesHelper从未使用适当的对象进行实例化.