首页 / PHP / PHP 工厂模式 价值理解和简单实例
PHP 工厂模式 价值理解和简单实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP 工厂模式 价值理解和简单实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2238字,纯文字阅读大概需要4分钟。
内容图文
工厂模式价值:
- 减少类之间的耦合
- 提高类的复用性
工厂模式(Factory)允许在代码执行时实例化对象。之所以被称为工厂模式是因为它负责“生产”对象。以数据库为例,工厂需要的就是根据不同的参数,生成不同的实例化对象。它只负责生产对象,而不负责对象的具体内容。
定义一个适配器接口:
<?php interface DbAdapter { /** * 数据库连接 * @param $config 数据库配置 * @return resource */ public function connect($config); /** * 执行数据库查询 * @param string $query 数据库查询SQL字符串 * @param mixed $handle 连接对象 * @return resource */ public function query($query, $handle); }
定义MySQL数据库操作类:
<?php class DbAdapterMysql implements DbAdapter { private $_dbLink; //数据库连接字符串表示 /** * 数据库连接函数 * @param $config 数据库配置 * @throws DbException * @return resource */ public function connect($config) { if($this->_dbLink = @mysql_connect($config->host . (empty($config->port) ? '' : ':' . $config->port), $config->user, $config->password, true)) { if(@mysql_select_db($config->database, $this->_dbLink)){ if($config->charset){ mysql_query("SET NAMES '{$config->charset}'", $this->_dbLink); } return $this->_dbLink; } } //数据库异常 throw new DbException(@mysql_error($this->_dbLink)); } /** * 执行数据库查询 * @param string $query 数据库查询SQL字符串 * @param mixed $handle 连接对象 * @return resource */ public function query($query, $handle) { if ($resource = @mysql_query($query, $handle)) { return $resource; } } }
SQLite数据库操作类:
<?php class DbAdapterSqlite implements DbAdapter { private $_dbLink; /** * 数据库连接函数 * @param $config 数据库配置 * @throws DbException * @return resource */ public function connect($config) { if ($this->_dbLink = sqlite_open($config->file, 0666, $error)) { return $this->_dbLink; } throw new DbException($error); } /** * 执行数据库查询 * @param string $query 数据库查询SQL字符串 * @param mixed $handle 连接对象 * @return resource */ public function query($query, $handle) { if ($resource = @sqlite_query($query, $handle)) { return $resource; } } }
定义一个工厂类,根据传入不同的参数生成需要的类:
<?php class sqlFactory { public static function factory($type) { if (include_once 'Drivers/' . $type . '.php') { $classname = 'DbAdapter' . $type; return new $classname; } else { throw new Exception('Driver not found'); } } }
调用:
$db = sqlFactory::factory('MySQL'); $db = sqlFactory::factory('SQLite');
内容总结
以上是互联网集市为您收集整理的PHP 工厂模式 价值理解和简单实例全部内容,希望文章能够帮你解决PHP 工厂模式 价值理解和简单实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。