我们来用面向对象的方式写程序吧..
上次说了很多面向对象的思想..很多人也许思想是有了..但是无法落实到程序上..
为什么JSP不是面向对象的呢??因为我们知道..web编程这种特性注定了要面向过程的..
然而一些框架..还是完成了这个心愿..当今的一些框架都是利用网站统一入口来实现了所谓的面相对象的编程方式..无非就是判断哪个Action然后去执行这个Action中的方法而已..Punny也完成了这一点..
但是网站统一入口有他的好处..也会有他的弊病..
所以今天我们要完成的就是不利用网站统一入口来完成所谓的面相对象的编程..
其实实现也非常简单..无非也就是判断Action..指向方法而已..
我们需要做的就是做一个父类..所有的页面都需要继承自这个父类即可..
- <?php
- /**
- * Action.class.php by Jessica
- *
- */
- class Action {
- /**
- * 404 Action Not Found
- * You can rewrite it if you need!
- *
- */
- public function notFound() {
- echo '404 Action Not Found!!';
- }
- /**
- * Start Action
- *
- * @access public
- *
- */
- public final function run() {
- $do = $_GET['do'];
- $goto = emptyempty($do) ? 'doDefault' : 'do'.ucfirst(strtolower($do));
- /**
- * Must be "do" + Action;
- * The first letter MUST be upper case and others MUST be lower case!!!
- */
- if (method_exists($this, $goto)) {
- return $this->$goto();
- } else {
- return $this->notFound();
- }
- }
- }
我们需要做的.就是继承这个类好了..
PS:这次用了英文注释..顺便锻炼下英文..也许有些语法错误..Orz…
谈面向对象的思维方式..
这个标题有点大..我能说多少说多少..因为我也是个菜鸟..如果其中有些理解跟您有出入..还望指教..有争议才可以进步:)..
新手为什么总抱怨面向对象编程(以下简称OOP)难学??
新手为什么总无法深刻的理解OOP的思想??
能写出一个合格的类就代表你理解了OOP的思想了吗??
什么样才算真正的理解了OOP??
OOP难在什么地方??为什么我总是学不会??
相信很多人和我一样..在学习OOP的时候总会有上面那么多的问题..不过不要紧.我们今天就来探讨一下这些问题..
我个人认为..很多人都认为会写一个类就理解了OOP的思想了…这个思路是错误的..这就是为什么很多人虽然会写类了..但是写出来的类很“畸形”..究其根源..还是因为没有深刻的理解OOP的思维.
我建议大家..努力学习OOP基础..先不要去尝试写一个值得骄傲的类..你扪心自问..你虽然可以写出一个优秀的类.但是你理解了OOP了吗??
现在对于广大的PHPer来说..一个非常困难就在眼前..不光是我们这些菜鸟..就连一些著名的开源程序也一样..对于OOP非常不明确..
根据我的理解.我觉得大部分人写出”畸形”的类还是对OOP没有理解的非常深刻..那么好..今天我们大家就来探讨一些这个问题…
我们首先得知道.这个世界为什么会有OOP.为什么会出现OOP..一个事物从出现到发展.到今天的大红大紫..肯定有它无可替代的优越性..这种优越性经过这么多年的发展…很有必要普及到每个程序员..因为作为一名程序员.一定要有这样的思想..你的程序不是写给你自己的..你的程序是写给他人甚至后人看的..一段优美的代码也许一个程序员一生只能写出一段.但是这段代码也许会对以后发生惊人的意义..所以建议大家以后写代码.不要为了赶时间.不要为了着急实现某项功能..希望大家仔细锤炼代码..仔细思考..这对于你本人也是一种提高..
其次我们得理解为什么程序最初是面向过程的..也就是为什么会先有C而不是先有C++..好像这是个人类学的问题.或者说是一个哲学问题..人类思考问题是按照某一种过程的..这一个过程的结束也许可以发生一个质的改变..因为时间是这个空间不可缺少一个维度.所以他决定了事物都是按照一个过程发展进行的..所以从这个角度来说..面向对象于面向过程并不冲突的..其实面向对象是一种思维方式.而不是一种处理事务的过程..
为什么会出现面向对象呢??这个也得从人类的认知说起..因为人们逐渐发现了..这个世界是可以总结出来的..人们为了更好的判断事物.总是自觉或者不自觉的在给事物进行归类..这种归类的过程就是人们对面向对象的思维的一种认识.一种学习.一种进步..
人们会把水果放在一起储藏..再把肉类放在一起储藏..水果中又把容易变质的放在一起..这些不自觉的行为当被上升为理论的时候..这个强大的面相对象的就出现了..
一切皆对象.这句话果真不错..我目前还没有发现这个世界上不是”对象”的一种事物..你能找到吗??你理解这句话吗??噢对..貌似”时间”不是对象..那”时间”又是什么呢??这个需要跟霍金商量下吧..
教你真正理解面向对象和多态.
以下的内容都是我自己总结的.我已经非常尽力把这些事说的非常简单易懂了.其中的东西都不是非常真实的.大部分都是笑谈.帮助大家更好的理解.不要钻牛角尖去研究我说的真实性.
当然这些都是我自己理解的.如果你觉得跟你想象的有些出入,我非常喜欢热烈的讨论.年轻人需要这种气氛.
好了废话不说了.下面开始介绍.
首先你得自己知道为什么会有面向对象的编程
我简单解释下:(这不是真正产生面向对象概念的原因.但是非常易懂)
很久很久以前.软件开始越做越大.代码也越写越多.每个人与每个公司的代码库都越来越大.
举个例子:
有个A公司.他们公司都喜欢把自己写的函数放在一个名字为function.php里的文件里.随着日月的积累.
这个文件变得越来越大.我们设想他们比较笨.不会再建立个新文件:)..
而且里面什么样的函数都有.有数组的.有字符串的.杂乱无章.不好管理.
这时候他们就停下来思考.如何解决这个棘手的问题.
于是爱因斯坦开始去探索宇宙大统一的理论.假定他发现了.大统一.顾名思义.什么东西的本质其实都是一样的.
然后这些人根据爱因斯坦的大统一理论发现了.其实软件设计跟我们的平时生活也是一样的.
分类目录
- ActionScript (2)
- CSS (25)
- Java (3)
- JavaScript (41)
- PHP (108)
- 心情杂谈 (34)
- 收集整理 (77)
- 本站原创 (57)
最近文章
- 在sae中利用SaeFetchurl进行豆瓣的OAuth授权
- OAuth 1.0a与1.0协议的改进…
- 深入理解OAuth与豆瓣OAuth test
- include_path+__autoload与数组+__autoload的比较
- 将google ssl设置为IE8的默认搜索引擎..
- 我们来做一个会呼吸的菜单吧!!
- 在编译php-fpm0.6的时候需要注意的一些问题
- 使用PHP将大文件导入到数据库中..
- 关于用PHP调用WebService中参数为complexType的问题
- 神奇的两次按位非运算符
- 百路推免费短网址服务..首创”收藏夹获取短网址”..
- 哥学社正式上线..
- jQuery中getJSON跨域原理详解
- Web辅助工具条(原名:河蟹工具条CrabBar)0.1发布
- 腾讯微博PC端发图教程
近期评论
- 老飞的小窝 在 jQuery中getJSON跨域原理详解 上的评论
- Jackie.Hamos 在 将google ssl设置为IE8的默认搜索引擎.. 上的评论
- Elmer Zhang 在 在sae中利用SaeFetchurl进行豆瓣的OAuth授权 上的评论
- 茶叶蛋 在 一个PHP+AJAX留言板的完整例子.非常简单! 上的评论
- 9527 在 我们为什么要抛弃模板引擎?? 上的评论
- hikurasai 在 Flash TagCloud中文版. 上的评论
- lx 在 PHP上传进度条深度解析 上的评论
- lx 在 使用PHP将大文件导入到数据库中.. 上的评论
- nflauthentic 在 哥学社正式上线.. 上的评论
- uggsale 在 有三个主题的CSS导航菜单 上的评论
文章归档
- 2010 年八月 (4)
- 2010 年七月 (3)
- 2010 年六月 (4)
- 2010 年五月 (2)
- 2010 年四月 (9)
- 2010 年三月 (12)
- 2010 年二月 (1)
- 2010 年一月 (3)
- 2009 年十二月 (2)
- 2009 年十一月 (3)
- 2009 年十月 (3)
- 2009 年九月 (5)
- 2009 年八月 (4)
- 2009 年七月 (6)
- 2009 年六月 (8)
- 2009 年五月 (8)
- 2009 年四月 (16)
- 2009 年三月 (19)
- 2009 年二月 (22)
- 2009 年一月 (20)
- 2008 年十二月 (38)
- 2008 年十一月 (22)
- 2008 年十月 (7)
- 2008 年九月 (3)
- 2008 年八月 (24)

Jessica
