2016-05-30 4 views
0

これは何度か尋ねられていると確信していますが、私はまっすぐ前方またはよく説明された答えを見つけることができないようです。私はアカウントオブジェクト/クラスをPHP内で作成しようとしています。そこで、アカウントからデータを取得できます。問題は、database.phpクラスをインクルードできないため、作成したすべてのアカウントを取得できることです。PHPクラスに別のファイルを含めてください

私はPHPでかなり新しく、多くのプロセスや慣習がどのように機能しているかについて広範な知識を持っていません。私が実行しているエラー/警告はこれです。

警告:ストリームをオープンに失敗しましたありません::ライン上の〜/ account.phpでそのようなファイルやディレクトリ を3

ここに私のaccount.phpです(../ database.phpでは)が含まここで

<?php 

include '../database.php'; 

class Account { 

    protected $username, $email; 

    protected function getEmail() { 
     return $this->email; 
    } 

    protected function getUsername() { 
     return $this->username; 
    } 

    public function __construct($username, $email) { 
     $this->username = $username; 
     $this->email = $email; 
    } 

    public static function getUser($username) { 
     $statement = getConnection()->prepare('SELECT * FROM account WHERE username=?'); 
     $statement->bindValue(1, $username); 

     if ($rows = $statement->fetch()) { 
      $account = new Account($rows['username'], $rows['email']); 
     } 

     return $account; 
    } 

} 

クラス

は、私が何か間違ったことをやったか、物事

<?php 

function getConnection() { 
    $dbh = new PDO("mysql:host=127.0.0.1;dbname=mcsl;port3306", "root", ""); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    return $dbh; 
} 
を変更する必要があり包み私database.phpであります

ディレクトリ構造:

Directory Structure

+0

ディレクトリaccount.phpファイル内database.phpでファイルにアクセスするためにinclude (dirname(__FILE__)."/../database.php")を使用することができます。 –

+0

'account.php' *' database.php'ページはどこに保存されていますか? –

+0

あなたのエラーによると、あなたの 'database.php'ファイルのパスが間違っています。 – Amous

答えて

3

あなたは正しくない可能性があり

+0

魅力的な作品! – Jordan

+0

この問題のトラブルシューティングチェックリストがあります:http://stackoverflow.com/questions/36577020/failed-to-open-stream-no-such-file-or-directory –

0

現在、オブジェクト指向と手続き型コードの混在しています。

データベースフィーチャをクラスに追加することは、通常、依存性注入によって行われます。言い換えれば、あなたは例えば、どのようなメソッドの引数は、それを必要とするデータベースオブジェクトを渡して、それを強制するヒンティングのタイプを使用します。

public static function getUser(MyConnectionClassOrInterface $db, $username) { 
} 

あなたには、およそとして、あなたはを基準にしていた、相対パスを使用していますメインスクリプト、現在のファイルではありません。絶対パスを構築したり、より精巧なクラスの自動ローダーを使用することができます。

+0

ありますインクルード問題のトラブルシューティングチェックリスト:http://stackoverflow.com/questions/36577020/failed-to-open-stream-no-such-file-or-directory –

関連する問題