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数据库连接类~~做成一个分页类!
Nov 25 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
浅析php单例模式
Nov 25 PHP
Yii框架调试心得--在页面输出执行sql语句
Dec 25 PHP
php生成动态验证码gif图片
Oct 19 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 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中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
jQuery 连续列表实现代码
2009/12/21 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
Vue computed 计算属性代码实例
2020/04/22 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
python生成圆形图片的方法
2020/03/25 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
python爬取网易云音乐评论
2018/11/16 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
python如何求圆的面积
2020/07/01 Python
python如何变换环境
2020/07/21 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
演讲主持词
2014/03/18 职场文书
师恩难忘教学反思
2014/04/27 职场文书
财务部绩效考核方案
2014/05/04 职场文书
驾驶员安全责任书
2014/07/22 职场文书
Python实现简繁体转换
2021/06/07 Python
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
python开发的自动化运维工具ansible详解
2021/08/07 Python