2017-04-13 10 views
0
class Event extends DB_CONNECTION { 

    private $EVNT_ID; 
    private $Organizer; 
    private $name; 
    private $venue; 
    private $discription; 
    private $picture; 
    private $Address; 
    private $start_datetime; 
    private $end_datetime; 
    private $category; 
    private $topic; 
    private $Ticket; 
    private $Sponsor; 
    private $Special_guest; 
    private $active; 

    function __construct(Organizer $org) { 
     $this->Organizer = $org; 
     $this->Ticket = Ticket::get_tickets($this); 
     $this->Sponsor = new Sponsor($this); 
     parent::__construct(); 

    } 
} 


public function fetch_events() { 

    $sql = "SELECT * "; 
    $sql .= "FROM `event` "; 
    $sql .= " ORDER BY `EVNT_ID` DESC LIMIT 21 "; 

    $this->data_set = self::query($sql); 
    $this->data_set->setFetchMode(PDO::FETCH_CLASS, 'Event'); 

    $events = $this->data_set->fetchAll(); 
    return (isset($events)) ? $events : false; 

} 

これは バイパスPDOコンストラクタフェッチパラメータエラー

私のイベントクラスのコンストラクタ

ある現在のデータベース接続のためのPHPおよびPDOを使用して、イベント管理システムを開発。

SQLクエリでオブジェクトを初期化するために、フェッチモードオプションとしてPDOを選択しました。コンストラクターエラーが発生します。

PDOがそのクラスからデータをフェッチするときに"cannot recreate __construct "エラーを発行するため、引数にコンストラクタを使用できません。

これを回避する方法はありますか?または、クラスの構造を変更して、init()関数を使用して、__constructorを使用する代わりにオブジェクトを初期化する必要がありますか?

+0

ここでPDOが果たす役割の正確さ、全体的なデザイン、エラーをトリガするコード行は明確ではありません。質問を編集し、問題を再現する有効なコードを共有してください。 –

答えて

0

DB接続クラスを拡張しないでください。 インスタンスを作成し、代わりにコンストラクタパラメータとして送信

+0

あなたは理由を教えてもらえますか、副作用か何かありますか?申し訳ありません私は初心者です –