PHP工厂模式简单实现方法示例


Posted in PHP onMay 23, 2018

本文实例讲述了PHP工厂模式简单实现方法。分享给大家供大家参考,具体如下:

工厂模式是一种类,建立了一个工厂来根据所需来创建对象,这种方式在多态性编程中是很重要的,允许动态替换类,修改配置等。

php示例代码如下:

//-----------------------------工厂模式-------------------------//
class A{
 public $class;  // public $class = $_GET['c']; //类名
 public $method; // public $method = $_GET['m']; //方法
 public function __construct($class,$method){
  $this->class = ucfirst(strtolower($class)); //对类名进行安全处理
  $this->method = strtolower($method);  //对方法名进行安全处理
  $this->work($this->class,$this->method);
 }
 public function work($class,$method){
  // 把文件命名成 (类名.class.php的形式),就可以通过类名找到文件。
  //include '文件名(文件在别的地方)';  #例如 include './index.php'; 引入文件然后实例化类。
  $c = new $class; //实例化类
  $c->$method(); //访问类的方法
 }
}
class B{
 public function ba(){
  echo '实例化后的ba方法<br>';
 }
 public function bb(){
  echo '实例化后的bb方法<br>';
 }
}
class C{
 public function ca(){
  echo '实例化后的ca方法<br>';
 }
 public function cb(){
  echo '实例化后的cb方法<br>';
 }
}
//工厂模式的实现
$a = new A('b','ba');  // 通过类访问方法
$a = new A('C','ca');  // 通过类访问方法

运行结果:

实例化后的ba方法
实例化后的ca方法

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 反射机制实现动态代理的代码
Oct 22 PHP
ezSQL PHP数据库操作类库
May 16 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
php IP转换整形(ip2long)的详解
Jun 06 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
Laravel 5 学习笔记
Mar 06 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
Laravel解决nesting level错误和隐藏index.php的问题
Oct 12 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 #PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 #PHP
PHP实现的mysql读写分离操作示例
May 22 #PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 #PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 #PHP
PhpStorm本地断点调试的方法步骤
May 21 #PHP
PHP自动识别当前使用移动终端
May 21 #PHP
You might like
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
JavaScript prototype 使用介绍
2013/08/29 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
jQuery解析XML文件同时动态增加js文件的方法
2015/06/01 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python冲顶大会 快来答题!
2018/01/17 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
教育项目合作协议书格式
2014/10/17 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
汽车销售合同文本
2019/08/08 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS