在PHP的论坛中总是听到有人对PHP的OOP支持说三道四的,说这有缺陷,那里不足,但是都拿不出实际的例子。

原来说过要和大家说说这事,但是一直很忙,现在算是抽了些时间了,所以把我刚刚做过的一个项目的框架拿出来和大家探讨一下。这个项目99%的代码是用oop方式编写的,感觉PHP对于OOP支持非常好,不是一般的好,是非常的好。有由于项目本身是一个商业项目所以源代码不好公布出来,但是基本框架还是可以说一说的,而且经过简化的例子更容易理解一些。如果你对PHP中的OOP还不太了解,还是就此打住吧,先去看看手册,或者基础读物再来看也不迟,反正这个是贴子没有长腿也跑不了。

长话短说,立刻开始吧。我这里会用到一个简单的例子,只有一个半的功能。一个是向浏览器发送一句”Hello, I can say OOP in PHP world!”,另外半个功能是从数据库中进行一个查询然后输出到浏览器,说它是半个功能是因为只是作为一个例子讲讲没有实际的数据库操作。

首先从我的第一个文件index.php 开始介绍吧。我的index.php文件是这样的:

CODE: ;run(); ?>;

这个就是全部了,虽然只有4行,但是如果用OOP的方式写这个应该就够了吧。 有一点经验的哥们会发现这里只用到了一个Application 对象,那么一定很想知道这个对象究竟长什么样呢?我们继续看看class.Application.php 这个文件的内部。从以上的代码中我们知道她应该至少包含两个方法 Application() 和 run() 所以大体上应该长成这样

CODE: ;

现在就算知道Application 是什么样,它好像也没有办法完成我们预先设定的功能呀?所以还要介绍一下如何运行这个程序,在我的结构中所有的页面都是通过index.php和一个action参数进行访问的例如第一个功能应该这样访问 index.php?action=HelloPage,而第二个功能则是通过index.php?action=DatabasePage进行访问。这样的结构大家也许并不陌生吧。所以index.php 页面应当知道传进来的 action 参数是什么,也就是说Application对象应当知道这个action 参数是什么。所以我们需要给Application增加一个方法 getAction()来获得action参数。既然知道action,知道了要做什么,那么方法 run()也就有知道如何去run了。

同时我还可以把(完成功能的)每一个页面作为一个对象来看待,所以我应该至少还需要两个类 class HelloPage 和 class DatabasePage 由于这两个对象最终都是向浏览器发送页面所以把他们共同的部分提出来作为他们的父类 class Page 以下是三个类文件的内容

class.Page.php

CODE: [...]

阅读(183) | 评论(0) | 转发(0) |

php oop 效率,浅谈PHP的oop相关推荐

  1. 浅谈代码的执行效率(4):汇编优化

    终于谈到这个话题了,首先声明我不是汇编优化的高手,甚至于我知道的所有关于汇编优化的内容,仅仅来自于学校的课程.书本及当年做过的一些简单练习.换句话说,我了解的东西只能算是一些原则,甚至也有一些&quo ...

  2. Esp8266 进阶之路21 【高级篇】浅谈 esp8266 如何在本地局域网网络情况下实现最大效率地和前端实现数据交互。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  3. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

  4. 浅谈 Java VM 发展

    浅谈 Java VM 发展 Jim Huang <jimchyun @ ccns.ncku.edu.tw> <jserv @ kaffe.org> 略为整理笔者对 Java V ...

  5. 浅谈Android中的MVP与动态代理的结合

    浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...

  6. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  7. OOD面向对象设计浅谈

    來源:http://dev.csdn.net/htmls/59/59377.html OOD面向对象设计浅谈 前言 OOD指面向对象设计,在软件设计生命周期中发生于OOA之后期或者之后,OOA与OOD ...

  8. 面向过程、面向函数、面向对象的区别浅谈

    Python的面向过程.面向函数.面向对象的区别浅谈 转自--猎奇古今,加上其他 有人之前私信问我,python编程有面向过程.面向函数.面向对象三种,那么他们区别在哪呢? 面向过程就是将编程当成是做 ...

  9. 浅谈三层架构 通过这个,+Java开发模式经验。终于相通了,动软到底是为什么这么做...

    浅谈三层架构 收藏 自己理解的原理 http://www.cnblogs.com/mahaisong/archive/2011/05/12/2044665.html 浅谈三层架构  通过这个,+Jav ...

最新文章

  1. 理解I/O Completion Port(完成端口)
  2. iOS标准库中常用数据结构和算法之内存池
  3. 巨头的转身 ARM阵营开始烧英特尔的后院
  4. SQLite学习手册(开篇)
  5. spring boot Exception in Thread “main” java.lang.classNoFoundException
  6. Vue3计算属性computed
  7. 安全狗服云PC端V2.5.1发布 助力服务器安全运维
  8. 电脑声音太小如何增强_如何录制电脑上播放的声音,背景音乐
  9. 中断服务程序设计实验
  10. Phobos勒索病毒完整处理过程
  11. Ubuntu下Gnome修改键盘映射
  12. “十四五”国家应急体系规划发布 智慧应急成为总体建设目标之一
  13. 三星安卓手机刷linux,三星galaxy nexus刷ubutun系统的详细步骤
  14. 单例模式有几种写法?
  15. 武汉科技大学计算机课程设置,武汉科技大学课程建设管理办法
  16. 移动聚合支付招商,管道收入享长期分润
  17. 怎么看xray发了那些数据包
  18. Event-Souring模式
  19. SAP中导出物料评估类对应关系清单
  20. Hive-cli(hive)与Beeline的区别

热门文章

  1. 使用爬虫刷blog访问量 随机代理IP 随机user_agent
  2. jquery html页面跳转,HTML 链接
  3. 分子动力学aimd_研究人员在沸石分子筛活性调控研究方面取得新进展
  4. java内存stack heap_java内存解析-------stack(栈)和heap(堆)的理解
  5. python日志处理三方工具loguru与常用场景快捷配置
  6. 检测php常量是否存在,php判断变量常量是否存在_PHP教程
  7. 【洛谷】普及练习场 深度优先搜索【易】
  8. Java servlet ajax
  9. LintCode刷题笔记-- BackpackIII
  10. org.springframework.dao.InvalidDataAccessApiUsageException