免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2204 | 回复: 10
打印 上一主题 下一主题

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-15 04:40 |只看该作者 |倒序浏览
真*菜鸟阶段...


  1. <?php

  2. if ($_GET['action'] == 'sayHello') {
  3.   echo 'Hello World!';
  4. }

  5. ?>;
复制代码

论坛徽章:
0
2 [报告]
发表于 2005-02-15 04:41 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

菜鸟进阶阶段...


  1. <?php

  2. $authorizedActions = array('sayHello');
  3. $action = $_GET['action'];

  4. if (!in_array($action, $authorizedActions)) {
  5.   exit('Invalid Parameter!');
  6. } else {
  7.   if ($_GET['action'] == 'sayHello') {
  8.     echo 'Hello World!';
  9.   }
  10. }

  11. ?>;
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-02-15 04:42 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

高级菜鸟阶段...


  1. <?php

  2. $thisPage = new ThisPage;
  3. $thisPage->;triggerEvents();

  4. class ThisPage {

  5.   var $defaultHandler = null;
  6.   var $events = array();

  7.   function ThisPage($defaultHandler = 'sayHello') {
  8.     $this->;requestMapping = array('sayHello' =>; 'on_sayHello');
  9.     $this->;defaultHandler = $defaultHandler;
  10.     $this->;parseRequests();
  11.   }

  12.   function parseRequests() {
  13.     if (is_array($_GET)) {
  14.       foreach ($_GET as $req =>; $val) {
  15.         if (is_array($this->;requestMapping) and array_key_exists($req, $this->;requestMapping))
  16.           $this->;events[] = $this->;requestMapping[$req][$val];
  17.         }
  18.       }
  19.     }
  20.   }

  21.   function triggerEvents() {
  22.     if (is_array($this->;events) and count($this->;events) >; 0) {
  23.       foreach ($this->;events as $eventHandler)
  24.         in_array($eventHandler, get_class_methods($this)) and $this->;$eventHandler();
  25.       } elseif (in_array($this->;defaultHandler, get_class_methods($this))) {
  26.         $this->;{$this->;defaultHandler}();
  27.       } elseif (empty($this->;defaultHandler)) {
  28.         return null;
  29.       } else {
  30.         exit('Invalid Parameter.');
  31.       }
  32.     }
  33.   }

  34.   function on_sayHello() {
  35.     echo 'Hello World!';
  36.   }

  37. }

  38. ?>;

复制代码

论坛徽章:
0
4 [报告]
发表于 2005-02-15 04:44 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

宗师级菜鸟阶段...


  1. <?php

  2. $eventReg =& new EventRegister;
  3. $eventReg->;register('action', 'sayHello');
  4. $listener =& new EventListener($eventReg, 'msgHandler');
  5. $listener->;trigger();

  6. class EventRegister {

  7.   var $events;

  8.   function EventRegister() {
  9.     $this->;events = array();
  10.   }

  11.   function register($eventName, $eventHandler) {
  12.     $this->;events[$eventName] = $eventHandler;
  13.   }

  14.   function getByName($eventName) {
  15.     if (isset($this->;events[$eventName])) {
  16.       return $this->;events[$eventName];
  17.     } else {
  18.       return false;
  19.     }
  20.   }

  21.   function getAll () {
  22.     return $this->;events;
  23.   }

  24. }

  25. class EventListener {

  26.   var $eventReg;
  27.   var $request;
  28.   var $defaultHandler;

  29.   function EventListener(&$eventReg, $defaultHandler = null) {
  30.     $this->;eventReg = $eventReg;
  31.     $this->;defaultHandler = $defaultHandler;
  32.     $this->;findCurrentEvents();
  33.   }

  34.   function findCurrentEvents() {
  35.     $events = $this->;eventReg->;getAll();
  36.     foreach ($events as $eventName =>; $eventHandler) {
  37.       if (isset($_REQUEST[$eventName])) {
  38.         $this->;request[$eventName] = $eventHandler;
  39.       }
  40.     }
  41.   }

  42.   function trigger() {
  43.     if (isset($this->;request)) {
  44.       foreach ($this->;request as $eventName =>; $eventHandler) {
  45.         $$eventHandler =& new $eventHandler($eventName);
  46.       }
  47.     } else {
  48.       $defaultHandler =& new $this->;defaultHandler;
  49.     }
  50.   }

  51. }

  52. class msgHandler {

  53.   function msgHandler($eventName = null) {
  54.     switch ($_REQUEST[$eventName]) {
  55.       default:
  56.         return null;
  57.       case 'sayHello':
  58.         echo 'Hello World!';
  59.         break;
  60.     }
  61.   }

  62. }

  63. ?>;
复制代码

论坛徽章:
0
5 [报告]
发表于 2005-02-15 04:52 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

顶级菜鸟阶段...

唉, 这个阶段太难了... (限于篇幅, 请读者自行想象...)

MVC + flyweight + abstract factory + iterator + .....

本阶段的代码充分考虑到了程序的扩展性, 灵活性, 强壮度.... 设计思路完全符合里氏代换原则, 依赖倒转原则, 接口隔离原则, 合成聚合复用原则, 迪米特原则等等等等...

(代码预想图... 写个 100 页 应该不成问题...)

ps: 本程序在 8086 级别的微机上既可运行, 内建专用操作系统,  代号 "HPNix.NET", 服务器可以不用装任何 OS, WebServer, DBServer 即可全功能运行代码 (当然, 装了也没有问题), 充分符合了新一代的 Platform Independent 设计理念.

论坛徽章:
0
6 [报告]
发表于 2005-02-15 04:52 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

最后终于到了梦寐以求的菜鸟脱离阶段.... (往下翻....)









































  1. <html>;
  2.   <head>;</head>;
  3.   <body>;Hello World!</body>;
  4. </html>;
复制代码

论坛徽章:
0
7 [报告]
发表于 2005-02-15 05:46 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

后记:

前几天从网上拉了一个程序回来, 光 PHP 代码有 5M, (纯 logic, 不包括模板),  安装了之后一看, 实现的功能实在惨不忍睹, 该有的功能没有, 花里胡哨的东西数不胜数 (好比一个生成报表软件, 报表没做成, 倒捆绑了一堆计算器, 计时器, 桌面主题管理器, 备忘录等没用的小程序), 而且速度巨慢.

在 ReadMe 文件中, 该作者称该程序的设计模式充分考虑了灵活性和可扩展性, 再加上详尽的注释, 所以用户只要略通一点程序就可以 "极为方便地" 自行编写插件.

试用了半天, 不知这样的破烂程序为何能写出 5M, 随便打开了几个 150k 以上的文件一看, 终于稍微了解了作者的 "深意".

该程序虽然实用性等于零, 但 "极具教育意义", 占程序容量 70% 的注释深入浅出地介绍了各类 "设计理念", 代码中所展现的 Patterns "堪称" 设计模式参考手册的经典范例. 从这个角度来看, 作者也算是为民办实事了.

^_^

程序到底是拿来用的好还是拿来 show 的好呢 ^_^

论坛徽章:
0
8 [报告]
发表于 2005-02-15 10:03 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

深刻
longnetpro 该用户已被删除
9 [报告]
发表于 2005-02-15 10:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2005-02-16 11:00 |只看该作者

从菜鸟到脱离菜鸟之 Hello World ... PHP 篇...

有意思!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP