ホームページ  >  記事  >  バックエンド開発  >  PHPデータオブジェクトマッピングモードの例の詳細な説明

PHPデータオブジェクトマッピングモードの例の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-01 13:26:051552ブラウズ

phpのデザインパターンには様々なパターンがありますが、ここではあまり使われないデータマッピングパターンを紹介しますので、興味のある方はぜひご覧ください

。アプリケーションがデータベースと対話する方法をより効率的に整理します。

データ マッピング モードは、オブジェクトのプロパティとそれらを保存するテーブル フィールドの間の組み合わせの密度を減らします。データ マッピング パターンの本質はクラスです。クラスは、クラスの属性またはメソッドをデータベースの対応するフィールドにマップまたは変換し、その逆も同様です。

データマッピングの役割(仕事)は、双方が提示する情報を理解し、データテーブル

に格納された情報に基づいて新しいドメインオブジェクトを再構築したり、ドメインオブジェクトを使用したりするなど、情報へのアクセスを制御することです。データテーブル内の関連データを更新または削除するための情報。

オブジェクト指向のコードとデータベースのテーブルおよびフィールド間のマッピング関係のストレージを実装するには、さまざまな方法があります。考えられる 1 つの方法は、手動コーディングによってこのマッピング関係をデータ マッピング クラスに格納することです。

もう 1 つの方法は、PHP 配列を使用し、それをクラス自体にエンコードすることです。このクラスは、INI ファイルや XML ファイルなどの外部ソースからデータを取得することもできます。


データ オブジェクト マッピング モードは、オブジェクトとデータ ストレージをマップします。オブジェクトに対する操作は、データ ストレージに対する操作にマップされます。


コードにデータ オブジェクト マッピング モードを実装し、複雑な SQL ステートメントをオブジェクト属性操作にマップするための ORM クラスを実装します。オブジェクト リレーショナル マッピング、ORM .php


<?php
namespace Baobab;
class Hacl{
public $id;
public $haclname;
public $haclcode;
public $hacls;
protected $db;
function construct($id){
$this->db = new \Baobab\Database\Mysqli();
$this->db->connect(&#39;127.0.0.1&#39;, &#39;root&#39;, &#39;&#39;, &#39;test&#39;);
$res = $this->db->query("select * from ha_cl where id = {$id}");
$data = $res->fetch_assoc();
$this->id = $data[&#39;ID&#39;];
$this->haclname = $data[&#39;ha_cl_name&#39;];
$this->haclcode = $data[&#39;ha_cl_code&#39;];
$this->hacls = $data[&#39;hacls&#39;];
}
function destruct(){
$this->db->query("update ha_cl set
ha_cl_code = &#39;{$this->haclcode}&#39;,
ha_cl_name = &#39;{$this->haclname}&#39;,
hacls = &#39;{$this->hacls}&#39;
where ID = {$this->id}
limit 1");
}
}

index .php

<?php
namespace Baobab;
class Factory{
static function getHacl($id){
$key = &#39;user_&#39;.$id;
$user = \Baobab\Register::get($key);//表中id不同表示的是不同的对象
if(!$user){
$user = new \Baobab\Hacl($id);
\Baobab\Register::set($key, $user);
}
return $user;
}
}

Factory Pattern を使用すると、オブジェクトがパラメータとして渡されると、オブジェクトHacl が複数回作成されます。一方で、このオブジェクトを多くの場所で使用すると、コストが非常に高くなるため、この問題を解決するためにファクトリ モードで登録ツリー モードが使用されます。

以上がPHPデータオブジェクトマッピングモードの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。