我收到此错误
可捕获的致命错误:参数1传递给 classes \ session :: session_check()必须是。的实例 classes \ conf \ collections,没有给出,调用 第48行的/var/www/html/test1/index.php并在中定义 第18行/var/www/src/classes/session.php
我的收藏类是
namespace classes\conf{
class collections{
private $mongo;
public function __construct(){
$this -> mongo = new \MongoClient();
}
public function members(){
return $this -> mongo -> publicData -> members;
}
}
}
我的会话课程是
namespace classes{
use \classes\conf\collections;
class session{
private $session_id;
private $session_token;
private $cookie_token;
public function __construct(){
$this -> session_id = session_id();
$this -> session_token = (isset($_SESSION['token'])) ? $_SESSION['token'] : NULL;
$this -> cookie_token = (isset($_COOKIE['token'])) ? $_COOKIE['token'] : NULL;
echo 'Hey';
}
public function session_check(collections $collection){
$data = $collection -> members() -> findone(
array(
'account.username' => 'uday'
),
array(
'_id' => 1
)
);
return true;
}
}
}
我正在使用spl_autoload
来包含类。如果我在session_check函数之外创建新对象并作为变量传递,那么一切正常。但这也应该有效。任何人都可以解释为什么它会出现胎儿错误。
为什么collections $collection
没有创建对象,因为错误显示为none given
?
答案 0 :(得分:1)
您的错误原因是调用session_check
的代码。
public function session_check(collections $collection){
不会创建新集合,但要求在调用函数时传递类型为collections
的参数。
因此你必须做这样的事情:
$session = new session();
$collections = new collections();
$session->check_session($collections);