PHP可以在多个类中工作

pan*_*nda 0 php class

我有一个名为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)

请停下来,我已经在互联网上搜索了很长时间.谢谢.

nic*_*ckb 8

尝试这样的东西,它使用依赖注入设计模式.

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从未使用适当的对象进行实例化.