【问题标题】:Creating class object inside another class method giving fetal error在另一个类方法中创建类对象会导致致命错误
【发布时间】:2015-04-30 07:08:08
【问题描述】:

我收到了这个错误

可捕获的致命错误:参数 1 传递给 classes\session::session_check() 必须是 classes\conf\collections,没有给出,调用 /var/www/html/test1/index.php 在第 48 行并在 /var/www/src/classes/session.php 第 18 行

我的收藏类是

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

【问题讨论】:

    标签: php class oop namespaces


    【解决方案1】:

    错误的原因是调用session_check 的代码。

    public function session_check(collections $collection){
    

    不创建新集合,但需要在调用函数时传递collections 类型的参数。

    因此你必须这样做:

    $session = new session();
    $collections = new collections();
    $session->check_session($collections);
    

    【讨论】:

    • 啊。我不知道。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 2021-11-09
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    相关资源
    最近更新 更多