PHP函数调用另一个类

时间:2016-02-08 08:33:26

标签: php

我已经用PHP类分隔了一些文件,现在我需要在一个函数中将它们组合在一起:

include("require-class.php");

require_multi("db-class.php", "settings.php","users-class.php");

class ajaxLogin {
  private $settings;            
  private $users;

  public function __construct(settings $settings, users $users) {
    $this->settings = $settings;
    $this->users = $users;  
  }
}

global $ajaxLogin;
$ajaxLogin = new ajaxLogin;

settings.php中的类名为 settings users-class.php中的类名为 users 。我收到了一个错误:

  

PHP Catchable致命错误:参数1传递给   ajaxLogin :: __ construct()必须是设置的实例,没有给出,   在第47行的/var/www/html/idcms/admin/class/login-ajax.php中调用   并在/var/www/html/idcms/admin/class/login-ajax.php中定义   13,引用者:http://localhost/idcms/admin/

1 个答案:

答案 0 :(得分:2)

ajaxLogin的构造函数需要两个参数:$settings$user。所以你需要打电话:

$ajaxLogin = new ajaxLogin($settings, $user);

当然,您需要先实例化settingsuser,例如:

$settings = new settings();    // add arguments if required
$user = new user();            // add arguments if required

更新

如果您真的想在settings中实例化userajaxLogin,只需删除您__construct中的参数:

class ajaxLogin {
    private $settings;          
    private $users;

    public function __construct() {
        $this->settings = new settings();
        $this->users = new users();          
    }
}

但是,第一种方法通常是更好的方法,因为使用课程ajaxLogin的每个人都会立即知道此课程取决于settingsuser。有关此问题的详细解答,请参阅this question