2016-02-08 144 views
1

我已经分隔与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类名为设置和一个在users-class.php用户。我得到了一个错误:

PHP Catchable fatal error: Argument 1 passed to ajaxLogin::__construct() must be an instance of settings, none given, called in /var/www/html/idcms/admin/class/login-ajax.php on line 47 and defined in /var/www/html/idcms/admin/class/login-ajax.php on line 13, referer: http://localhost/idcms/admin/

+2

你如何调用这个类实例? – AnkiiG

回答

2

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

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

当然,你需要之前实例settingsuser,如:

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

UPDATE

如果你真的想要实例settingsuser在你的ajaxLogin里面,只需从你的__construct这样删除参数:

class ajaxLogin { 
    private $settings;   
    private $users; 

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

然而,第一种方法通常是最好的一个,因为大家谁使用类ajaxLogin立即知道,这个类取决于settingsuser。有关详情,请参阅this question

+0

好的,谢谢你,我想知道是否有任何方法可以在函数参数中调用这个函数,谢谢。 –

+0

@PavelKocfelda看到我更新的答案 – simon