2016-08-05 38 views
4

私は親クラスのコンストラクタを呼び出すようにしようとしているが、それは誤り親クラスのコンストラクタ呼び出しエラー?

Fatal error: Cannot call constructor

をスローし、同じコードが以前にうまく働いていた、私は何も変更していないと突然かもしれないのか分かりません起こった、それはこのエラーを投げている。

私はstackoverflowに関するいくつかの答えを読んだことがありますが、彼らはあなたの親クラスにはコンストラクタが含まれていないと言います。ここに私のコードは次のとおりです。

class DB 
{ 
    var $con; 

    public function __construct() 
    { 
     require_once 'configs/dbconfig.php'; 
     $this->connect(); 
    } 

    function connect() 
    { 
     try{ 
      $this->con = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USER,DB_PASS); 
      $this->con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
     }catch(PDOException $ex) { 
      echo $ex->getMessage(); 
     } 
    } 
} 

そして私はDBを拡張し、DBのコンストラクタを呼び出しているクラスの記事を持っています。

class Posts extends DB 
{ 
    var $user_id; 

    public function __construct($user_id) 
    { 
     parent::__construct(); 
     $this->user_id = $user_id; 
    } 

    function get_posts($search,$pages,$since_id=0,$max_id=false,$count=20,$status='active') 
    { 
     $extra = ''; 
     if($search) $extra .= " AND text LIKE CONCAT('%',:search,'%')"; 
     if(!empty($pages)) $extra .= " AND page IN('".implode("','", $pages)."')"; 
     if(!empty($status) && $status != 'all') $extra .= " AND status=:status"; 

     $max_id = ($max_id) ? $max_id : time(); 

     $sqlCommand = "SELECT id,pid,text,media,media_url,type,name,u_id,username,user_profile_url,user_photo_url,post_url,date,status,source,page_id FROM ".POSTS." WHERE date>=:since_id AND date<=:max_id".$extra." AND user_id=:user_id ORDER BY date DESC LIMIT $count"; 
     $params = array(':since_id'=>$since_id,':max_id'=>$max_id,':user_id'=>$this->user_id); 
     if($search) $params[':search'] = $search; 
     if($status && $status != 'all') $params[':status'] = $status; 

     $posts = $this->fetch($sqlCommand,$params); 
     return $posts; 
    } 
} 

答えて

1

これはあなたのPHPバージョンです。変更されている必要があります。PHPのバージョンを確認し、それを更新してください。

+0

@daisyありがとう、私は5.5から5.6に私のPHPのバージョンを変更し、それは私の問題を解決した。 –

-2

これは基本的なばかげた答えですが、「必要」を試しましたか?

+0

ファイルなどが必要ですか? –

+0

私はdonwvoterではありません。しかし、私は、この答えはコメントでなければならないと思います。 –

+0

@BhavikShah見てわかるように、私はStackoverflowを初めて使っています。しかし、あなたは正しい、私は彼の答えをコメントしている必要があります。 – IgorStravlov

-1

私は、(コンストラクタを呼び出すことで)新しいDBを返すDBで関数を作ってみる(hereを見て)これは知られているPHPのバグだと思うとPostsコールあなたが作成したこの機能インチ

+0

これは過去6ヶ月間実行されていましたが、コードに何も変更していないのに、なぜこのエラーが突然現れましたか? –

+0

おそらくあなたはPHPを更新しましたが、新しいバージョンではそれを行うことはできません。 – Syncro

+0

Downvoter、コメントとしてdownvotingの理由を述べてください。 –

関連する問題