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设计模式之观察者模式的应用详解
May 21 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
PHP中的日期加减方法示例
Aug 21 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
php中mail函数发送邮件失败的解决方法
Dec 24 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
php批量修改表结构实例
May 24 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
CI框架实现创建自定义类库的方法
Dec 25 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 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完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
js工具方法弹出蒙版
2013/05/08 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
[00:15]天涯墨客终极技能展示
2018/08/25 DOTA
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
python实现合并两个排序的链表
2019/03/03 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
护士的岗位职责
2013/12/04 职场文书
通信工程专业毕业生推荐信
2013/12/25 职场文书
境外导游求职信
2014/02/27 职场文书
校车安全责任书
2014/08/25 职场文书
2014年招生工作总结
2014/11/26 职场文书
升职自我推荐信范文
2015/03/25 职场文书
负责培养人意见
2015/06/05 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL