我已经用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/
答案 0 :(得分:2)
ajaxLogin
的构造函数需要两个参数:$settings
和$user
。所以你需要打电话:
$ajaxLogin = new ajaxLogin($settings, $user);
当然,您需要先实例化settings
和user
,例如:
$settings = new settings(); // add arguments if required
$user = new user(); // add arguments if required
更新
如果您真的想在settings
中实例化user
和ajaxLogin
,只需删除您__construct
中的参数:
class ajaxLogin {
private $settings;
private $users;
public function __construct() {
$this->settings = new settings();
$this->users = new users();
}
}
但是,第一种方法通常是更好的方法,因为使用课程ajaxLogin
的每个人都会立即知道此课程取决于settings
和user
。有关此问题的详细解答,请参阅this question。