从类函数返回类对象


Return class object from a class function?

我有三个文件:

main.php(所有站点代码)AccountHandler.class.php(处理登录/注销/获取acc详细信息)user .class.php(普通对象,通用用户特征的getter和setter)

在AccountHandler中的'login'函数中,它检查密码是否正确,然后返回该帐户的文件详细信息。然后,我希望实例化一个'User'对象,并用这些细节填充它,并从函数返回所述对象。

然而,在另一端,在main.php中,函数最初被调用,我需要能够识别'User'对象并访问其值。

我怎么能包括用户类文件在两个AccountHandler类和main.php,这样他们都可以使用"用户"类?

这些有意义吗?

class User
{
private $email;
private $username;
private $role;
public function __construct($email, $username, $role)
{
    $this->setUsername($username);
    $this->setEmail($email);
    $this->setRole($role);
}
public function getEmail(){
    return $this->email;
}
public function setEmail($email){
    $this->email = $email;
}
public function getUsername(){
    return $this->username;
}
public function setUsername($username){
    $this->username = $username;
}
public function getRole(){
    return $this->role;
}
public function setRole($role){
    $this->role = $role;
}

}

通过创建资源对象,您可以通过引用传递对象。

下面是一些示例代码。

Main.php

$resources = new stdClass;
$account = new account($resources);
$account->checkAccount();
if(isset($resources->user)){
   var_dump($resources->user);
}

Account类

class account{
  private $resources;
  private $loginSuccess = false;
  public function __construct($resources){
     $this->resources = $resources;
  }
  public function checkAccount(){
    if($this->loginSuccess){
       $this->resources->user = new user($email, $username, $role);
    }   
  }
}

您可能也会发现这很有用

原来我可以使用autoload:

spl_autoload_register('autoloader');
function autoloader($classname) {
    include_once 'php/includes/' . $classname . '.class.php';
}

在main.php的顶部,实例化AccountHandler并在其中使用User类,并自动包含所有内容!谢谢所有。