検索
ホームページバックエンド開発PHPチュートリアルPHP はアダプター パターンを実装します

PHP はアダプター パターンを実装します

アダプター パターンの核となる考え方: 特定の類似クラスの操作を統一された「インターフェイス」に変換します (ここに比喩があります) - アダプター、または比喩的に言えば、それらのクラスを統合または保護する「インターフェイス」です。詳細。アダプター パターンは、アダプターと対話するコードを変更することなく、「アダプティブ」クラスを簡単に追加または削除できる「メカニズム」も構築します。これは、「コード間の結合を減らす」という設計原則に沿っています。

???次の例は、擬似コードに近い PHP 構文を使用して、データベース操作用のアダプター クラスを示しています。このアダプター クラスは、MySQL データベースと Oracle データベースを操作できますが、同じメソッドを使用します。アダプター モードを使用するため、MySQL と Oracle データベース操作クラスの違いを気にする必要はありません。

??? SQLite などのデータベース操作用のクラスを簡単に追加し、アダプターに「挿入」すると、MySQL や Oracle と同じようにすぐに SQLite データベースを操作できます。

??? //アダプタークラス:
??? // すべてのデータベースを操作するための 4 つのメソッドを定義します

<?php
class Db_adapter {
	private $db;
	
	function __construct($db_obj) {
		$this->db = $db_obj;
	}
	
	function select_record() {
		$this->db->select ();
	}
	
	function insert_record() {
		$this->db->insert ();
	}
	
	function update_record() {
		$this->db->update ();
	}
	
	function delete_record() {
		$this->db->delete ();
	}
}

//MySQL 数据库操作类:
class Mysql {
	private $obj_mysql;
	
	function __construct() {
        $obj_mysql = ......
		
		;
	}
	
	function select() {
		$obj_mysql->mysql_select ();
	}
	
	function insert() {
		$obj_mysql->mysql_insert ();
	}
	
	function update() {
		$obj_mysql->mysql_update ();
	}
	
	function delete() {
		$obj_mysql->mysql_delete ();
	}
}

//Oracle 数据库操作类:
class Oracle {
	private $obj_oracle;
	
	function __construct() {
        $obj_oracle = ......
		
		;
	}
	
	function select() {
		$obj_oracle->oracle_select ();
	}
	
	function insert() {
		$obj_oracle->oracle_insert ();
	}
	
	function update() {
		$obj_oracle->oracle_update ();
	}
	
	function delete() {
		$obj_oracle->oracle_delete ();
	}
}

    //操作 MySQL 数据库:
    $obj = new Db_adapter(new Mysql())
	$obj->select_record ();
	$obj->insert_record ();
	$obj->update_record ();
	$obj->delete_record ();

    //操作 Oracle 数据库:
    $obj = new Db_adapter(new Oracle())
	$obj->select_record ();
	$obj->insert_record ();
	$obj->update_record ();
	$obj->delete_record ();
?>

??? 要件: MySQL クラスと Oracle クラスは同じ名前と同じ数のメソッドを持ちます。各メソッドは、データベースを操作するための独自のコードを実装します。ここで変換が行われます。
??? 新しいデータベース操作を追加します。同じ名前と同じ数のメソッドを持つ新しいクラスを構築します。メソッドの内部実装は考慮されません (シールドされます) - データベースの実装が異なると異なります。
???小さな欠点: 新しいクラスでは、メソッド名が要件を満たしていないか、過失により番号が異なっている可能性があります。
??? エラーの可能性を減らすために、いくつかの改善を行うことができます。インターフェースを定義し、それをテンプレートとして継承することで標準化を図る方法です。

??? db_adapter クラスのメソッドについては、インターフェース db_driver の関数のみを使用する必要があります。

<?php
//定义一个接口,
interface Db_driver {
	function select();
	function insert();
	function update();
	function delete();
}

// 数据库操作类,比如 MySQL,Oracle 必须实现 db_driver 接口的同名方法,从而进行了规范。
class Mysql implements Db_driver {
	private $obj_mysql;
	
	function __construct() {
        $obj_mysql = ......
		;
	}

	//这里省略的代码同前边的 MySQL 类
}

class Oracle implements Db_driver {
	private $obj_oracle;
	
	function __construct() {
        $obj_oracle = ......
		;
	}

	//这里省略的代码同前边的 Oracle 类
}
?>
?
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
什么是oracle asm什么是oracle asmApr 18, 2022 pm 04:16 PM

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

Oracle怎么查询端口号Oracle怎么查询端口号May 13, 2022 am 10:10 AM

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

oracle全角怎么转半角oracle全角怎么转半角May 13, 2022 pm 03:21 PM

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

function是什么意思function是什么意思Aug 04, 2023 am 10:33 AM

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果,其目的是封装一段可重复使用的代码,提高代码的可重用性和可维护性。

oracle查询怎么不区分大小写oracle查询怎么不区分大小写May 10, 2022 pm 05:45 PM

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

oracle怎么修改列长度oracle怎么修改列长度May 13, 2022 am 10:48 AM

在oracle中,可以利用modify配合“alter table”语句来修改列的长度,modify的作用就是修改字段类型和长度,也即修改字段的属性,语法为“alter table 表名 modify 列名 字段类型 需要修改的字段长度”。

oracle中字符怎么转大写oracle中字符怎么转大写May 13, 2022 am 10:59 AM

在oracle中,可以利用upper()函数将字符转为大写,该函数的作用就是将指定表中指定字段包含的字母全部转成大写,该函数配合select语句即可进行转换,语法为“select upper(指定字段的名称) from 指定表的名称”。

oracle 11g中的g是什么意思oracle 11g中的g是什么意思May 07, 2022 pm 06:02 PM

在oracle中,11g中的g是网格运算的意思,是grid的缩写;oracle 11g的版本是为了迎合分布式计算而做出的变化,因此做出了网格运算方面的改进,是oracle支持网格计算环境的体现,与8i中i代表internet的情况类似。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。