ホームページ  >  記事  >  バックエンド開発  >  Database_PHP チュートリアルでオブジェクトを使用する利点

Database_PHP チュートリアルでオブジェクトを使用する利点

WBOY
WBOYオリジナル
2016-07-13 16:58:44950ブラウズ

Mysql から必要な行 (レコード) を取得し、データを読み取り、変更を保存および取得する方法は誰もが知っています。それは明白かつ単純であり、プロセスの背後で煩雑な作業はありません。ただし、オブジェクト指向プログラミング (OOP) を使用してデータベース内のデータを管理する場合、このプロセスを大幅に改善する必要があります。この記事では、データベース レコードを管理するためのオブジェクト指向アプローチを設計する方法について簡単に説明します。データ内のすべての内部論理関係は、非常に組織化されたレコード オブジェクトにカプセル化され、特殊な (特定の) 検証コード システム、変換、およびデータ処理を提供できます。 Zend Engine 2 と PHP 5 のリリースにより、PHP 開発者は作業を支援するためのより強力なオブジェクト指向ツールを利用できるようになり、このプロセス (オブジェクト指向データベース管理) がより魅力的なものになります。

以下に、オブジェクトを使用してデータベースを記述する利点の一部を示します。
アクセサー メソッドを使用すると、プロパティの読み取りおよび書き込みプロセスを完全に制御できます
各レベルの各レコードと属性(操作)には確認プロセスがあります
リレーショナルテーブルからオブジェクトをインテリジェントに取得します
ロジックを再利用すると、すべてのデータ対話が同じコードベースを経由するため、メンテナンスが容易になります
煩雑なライブラリ (lib) ファイルではなく、さまざまなレコードの内部ロジックがそれぞれのクラスにすでに含まれているため、コードはシンプルです
コードや SQL クエリを手動で記述すると、エラーが発生する可能性が低くなります

アクセサメソッド

アクセス方法はクラス経由でインスタンスの変数に値を代入します。たとえば、User というクラスと $username というインスタンスがあり、User->username() と User->setUsername() を使用してインスタンスの割り当てを返します。

クラス ユーザー {
var $ユーザー名;

関数ユーザー名() {
$this->ユーザー名を返す;
}

関数 setUsername($newUsername) {
$this->ユーザー名 = $newユーザー名;
}
}
?>

このような「並外れたコード」を記述するには十分な理由があります。このプロセスではクラスを使用する追加の PHP コードが必要ないため、開発者はクラスを変更するという面倒な作業からより高い柔軟性を得ることができます。以下で、より完全な信頼できる User クラスを見てみましょう。
変数 $username は存在しなくなり、すべてが配列 $_data に統合されます
ユーザー名が空の場合、username() 関数はデフォルト (デフォルト) 値を提供します
setUsername() プロセスは、値を受け入れる前に、ユーザー名が標準形式 (単語の長さなど) に準拠しているかどうかを確認します

クラス ユーザー {
var $_data = array(); // ユーザー
のすべての属性を含む連想配列
関数ユーザー名() {
return !empty($this->_data['username']) $this->_data['username'] : '(名前なし!)';
}

関数 setUsername($newUsername) {
if ($this->validateUsername($newUsername)) {
$this->_data['ユーザー名'] = $newユーザー名;
}
}

function validateUsername(&$someName) {
if (strlen($someName) > 12) {
throw new Exception('ユーザー名が長すぎます') // PHP5 のみ
}
true を返します;
}
}
?>

明らかに、これはアクセス オブジェクトのデータを制御するのに非常に役立ちます。プログラマーがすでにユーザー名情報に直接アクセスしている場合、上記のコード変更によりコードが壊れてしまいます。ただし、上記のコードでコメントされているように、(クラスの) アクセサー メソッドを使用して、他に何も変更せずに検証機能を追加できます。ユーザー名の検証に注意してください (この例では、コードは setUsername() メソッドから独立しています)。検証からデータベースへの保存までのプロセスは簡単です。さらに、これは非常に良い経験則であり、メソッドやクラスが行う必要が少ないほど、再利用される可能性が高くなります。これは、サブクラスの作成を開始するとき、サブクラスが必要で、親クラスのメソッド (動作) の特別な詳細をスキップ (無視) したい場合、(この詳細の) メソッドが小さい場合に、より明白になります。繊細なため、(変更は) ほんの一時的なプロセスであり、このメソッドが非常に肥大化して複数の目的を果たしている場合、サブクラスに大量のコードをコピーすることでイライラすることになるかもしれません。

たとえば、Admin が User クラスのサブクラスである場合です。 Adamin ユーザー向けに、比較的厳格な異なるパスワード検証方法を使用する場合があります。親クラスの検証メソッドと setUsername() メソッド全体 (子クラスでオーバーライドされる) を検討することをお勧めします。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631386.html技術記事 Mysql から必要な行 (レコード) を取得し、データを読み取り、変更を保存および取得する方法は誰もが知っています。それは明白で簡単であり、プロセスの背後で難しいことはありません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。