2011-11-09 8 views
0

私はOOPHPを学んでいます。経験豊富なスクリプト作成者からの質問をしたかっただけです。このスクリプトはうまくいきますが、私が最初からすぐにそれを学ぶなら、より良いことです。OOPHPデータベース接続スクリプトの入力

これは私のconnect.php

<?php 
include ("classes/mysql.class.php"); 

$mysql = new Connect(); 
$mysql->mysql_Connect('localhost', 'root', 'root', 'test');?> 

であり、これは任意のコメントはofcourseのウェルコムある私のmysql_class.php

<?php 
class Connect { 
    var $serverhost, $username, $password, $db_name; 

    public function mysql_Connect($host, $user, $pass, $db) { 
     $this->serverhost = $host; 
     $this->username = $user; 
     $this->password = $pass; 
     $this->db_name = $db; 

     @mysql_connect($this->serverhost, $this->username, $this->password) or die("Kan geen verbinding maken met de database!"); 
     @mysql_select_db($this->db_name) or die("Kan geen verbinding maken met de geselecteerde database naam"); 
    } 
}?> 

です!

+0

Connectは非常に広範な用語であるため、クラスには奇妙な名前です。この名前は、データベース接続が確立されていることを明示する必要があります。おそらくMySQL接続さえできます。 例外を調べて、dieの代わりに使用する必要があります。 – TJHeuvel

+0

おそらく完全にあなたの質問ではなく、OOを正しく行う方法ですが、PHPにはデフォルトのmysqlより安全なPDO拡張があります。あなたもそれを調べるべきです。 – TJHeuvel

+0

以下の回答のように、私は本当にすべての入力をappriciate、私はこのように私は非常にgratefull任意のアドバイスのために新しいことを言ったように:)。ありがとう – Augus

答えて

2

私の最初の助言は、ホイールを再開発しないことです.PHPはすでに、PDOやMySQLi拡張のクラスバージョンなど、いくつかのデータベースインタフェースオブジェクトクラスを提供しています。

@を使用してエラーメッセージを表示しないようにすることもお勧めします。スクリプトをデバッグする必要がある場合に後で戻ってきて、スクリプトのパフォーマンスに悪影響を及ぼします。

あなたのOOPへのアプローチがかなり狭いので、まだコメントすることはあまりありません。あなたのクラスのプロパティを宣言するためにvarを使用するのではなく、適切な可視性を設定する代わりにpublic、protectedまたはprivateを使用することをお勧めします。 varキーワードはPHP 4への後戻りであり、最終的に削除される可能性があります。また、これは公開のエイリアスです。一般的な経験則として、パブリックプロパティを必要とせず、パブリックプロパティを保護または非公開にし、getterおよびsetterを実装して他のクラスにアクセスできるようにしたいとします。これは、パブリックプロパティを持っている場合、オブジェクトの内部状態を壊すコードの別のpiexeを停止するものは何もないからです。カプセル化とデータ隠蔽はOOPの重要な概念ですので、それらを調べることをお勧めします。

1

@を使用してエラーを抑制することは、実際には良いことではありません。 はまた、クラスの金型の使用も本当に悪い習慣(それはPHPUnitでコードがテスト可能ではない可能)で、あなたの代わりに

http://www.php.net/manual/en/language.exceptions.php

PHPはすでにデータベースを管理するために、このようにいくつかのクラスを持っている例外を使用する必要があります。

あなたのクラスは本当に簡単なので、なぜ

http://www.php.net/manual/en/class.mysqli.php

のMysqliクラスを使用しないPDO WICH私はお勧め: http://ca2.php.net/manual/en/class.pdo.php

データベース接続を管理します。機能を追加したい場合は、PDOまたはMysqliをサブクラス化することができます。

+0

ああ、良い点、私はdie()呼び出しに気付かなかった。私は例外をPHPで過度に使用される傾向があります。私は、例外を処理する正しい方法がある時があると考えていますが、例外的な状況のために予約する必要があります。最も合理的な特殊なケースは、通常のプログラムフロー制御構造で処理できます – GordonM