- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何自己写一个 PHP框架
/xdzy66/blog/item/d54a5f10c02652f6c2ce7964.html
2009-11-07 21:36
在 PHP的论坛中总是听到有人对 PHP的 OOP支持说三道四的, 说这有缺陷, 那里
不足,但是都拿不出实际的例子。原来说过要和大家说说这事,但是一直很忙,
现在算是抽了些时间了, 所以把我刚刚做过的一个项目的框架拿出来和大家探讨
一下。这个项目 99%的代码是用 oop 方式编写的, 感觉 PHP对于 OOP支持非常好,
不是一般的好, 是非常的好。 有由于项目本身是一个商业项目所以源代码不好公
布出来,但是基本框架还是可以说一说的, 而且经过简化的例子更容易理解一些。
如果你对 PHP中的 OOP还不太了解, 还是就此打住吧, 先去看看手册, 或者基础
读物再来看也不迟,反正这个是贴子没有长腿也跑不了。
长话短说,立刻开始吧。我这里会用到一个简单的例子,只有一个半的功能。一
个是向浏览器发送一句 Hello, I can say OOP in PHP world! ,另外半个功能
是从数据库中进行一个查询然后输出到浏览器, 说它是半个功能是因为只是作为
一个例子讲讲没有实际的数据库操作。
首先从我的第一个文件 index.php 开始介绍吧。 我的 index.php 文件是这样的:
【code start 】
?php
include_once (config.php);
include_once (class.Application.php);
$app = new Application();
$app-run();
?
【code end 】
这个就是全部了,虽然只有 4 行,但是如果用 OOP的方式写这个应该就够了吧。
有一点经验的哥们会发现这里只用到了一个 Application 对象,那么一定很想
知道这个对象究竟长什么样呢?我们继续看看 class.Application.php 这个文
件的内部。从以上的代码中我们知道她应该至少包含两个方法
—— Application() 和 run() 。所以大体上应该长成这样:
【code start 】
?php
class Application
{
function Application()
{
}
function run()
{
}
}
?
【code end 】
现在就算知道 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】
?php
class Page
{
function Page()
{
}
文档评论(0)