免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: dualface
打印 上一主题 下一主题

[学习] 单一入口应用程序概述 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2005-11-28 22:48 |只看该作者
我觉得大家应该讨论一下单一入口的各种实现技巧,而不是争论单一入口与多入口的优劣。

我琢磨的一个方案是这样的,指定一个目录如modules作为功能目录,每个功能作为该目录下的子目录如
modules/add/index.php
modules/reply/index.php
modules/edit/index.php
...
等等等,参数如这般调用index.php?action=add,用include ("modules/{$_GET['action']}/index.php")来调用子目录下的功能文件。

程序中事先利用函数读取所有modules目录下的子目录,作为$_GET['action']验证。

论坛徽章:
0
32 [报告]
发表于 2005-11-28 23:29 |只看该作者
原帖由 qingmedia 于 2005-11-28 22:48 发表
我觉得大家应该讨论一下单一入口的各种实现技巧,而不是争论单一入口与多入口的优劣。

我琢磨的一个方案是这样的,指定一个目录如modules作为功能目录,每个功能作为该目录下的子目录如
modules/add/index.ph ...


完全赞同你的意见,应该多讨论一下如何更好的实现。至于好不好,可以试试后再说。


我的实现方式是 MVC 模式。每个功能模块实现为一个 Controller 类,而每个功能就是该类的一个方法。Dispatcher(也就是 index.php) 根据 URL 参数构造需要的 Controller 并调用其指定的方法。

Controller 类的功能方法只需要分析 $_GET 或者 $_POST 参数,然后操作数据库或者调用其它功能库,最后将结果数据传递给视图(View)即可。

这样做的好处是,每个功能模块都是一个单独的文件,维护起来比较方便。

论坛徽章:
0
33 [报告]
发表于 2005-11-29 00:15 |只看该作者
原帖由 dualface 于 2005-11-28 23:29 发表
这样做的好处是,每个功能模块都是一个单独的文件,维护起来比较方便。  ...


你的方法应该是比较成熟的,我刚学不是很懂。

我的方法自己感觉对付简单应用也不赖,我的实际应用是每个功能就是一个目录,功能菜单名称链接也是自动挂接的,模块目录copy进去就ok,像插件一样,没有任何设置。

论坛徽章:
0
34 [报告]
发表于 2005-11-29 01:40 |只看该作者
原帖由 dualface 于 2005-11-27 13:59 发表

这句话是半开玩笑半认真的,不过确实有点牵强。


類似以每個葉面都寫上 include("init.php"); 來完成權限檢測的弱點還是很多的, 說 "健忘" 是其中之一倒還真不十分牽強, 有的老程序有上百個 PHP 入口, 而且隨著年復一年版本不斷更新, 有些源程序的文件名, 檢測方式也都在不斷改變.

所謂的 init.php 並不是一個像 "接口" 那麽穩固的東西, 你並不知道今後版本中的 init.php 裏面會干些什麽. 或許有很多 code fans 為你的核心程序寫了五花八門第三方插件, 然而當你決定在下一個版本中更新 init.php 的工作方式時, 就會很不幸地使得全部引用了 "init.php" 的老插件一律報廢.

所以在模塊化開發中實現單一入口, 一個一致的 application controller 是很有好處的.

[ 本帖最后由 LostFi 于 2005-11-29 01:46 编辑 ]

论坛徽章:
0
35 [报告]
发表于 2005-11-29 11:38 |只看该作者
原帖由 bennie 于 2005-11-28 22:02 发表

别的是同意的,但是这种话“没有任何一种方法要求比另一种方法更好的模块化设计。”,就和说一种方法比另一种方法好没有什么区别。都需要有特定上下文的语境才可以区别好坏。
还有后面那些话,纯粹是多余,说这 ...

没有任何一种方法要求比另一种方法更好的模块化设计


你真的读清楚了这句话吗?
bennie 该用户已被删除
36 [报告]
发表于 2005-11-29 12:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
37 [报告]
发表于 2005-11-29 13:04 |只看该作者
Dispatcher 应该是"发送者"的意思吧

论坛徽章:
0
38 [报告]
发表于 2005-11-29 13:07 |只看该作者
原帖由 qingmedia 于 2005-11-28 22:48 发表
我觉得大家应该讨论一下单一入口的各种实现技巧,而不是争论单一入口与多入口的优劣。

我琢磨的一个方案是这样的,指定一个目录如modules作为功能目录,每个功能作为该目录下的子目录如
modules/add/index.ph ...


你这样不是非常安全的说,应该在安装的时候先在数据库里注册一下。将相关信息写入数据库。要不然万一网站被人非法上传文件了,那不就挂了。

等我过两天回公司了,我把我那个放弃的单一入口解决方案发出来,是比较成熟的,但是参数过长,看了很郁闷,所以我放弃了

论坛徽章:
0
39 [报告]
发表于 2005-11-29 14:25 |只看该作者
原帖由 litie123 于 2005-11-29 13:07 发表
你这样不是非常安全的说,应该在安装的时候先在数据库里注册一下。将相关信息写入数据库。要不然万一网站被人非法上传文件了,那不就挂了 ...


这我也不确定,我自己觉得好像没什么大问题,既然盗贼有了开门的钥匙,那么就没必要再去翻窗户了。

既然他可以任意非法上传php文件,那么他连上数据库应该不难吧?什么东西还有安全感呢?这是否应该要加强上传文件的管理呢?

请多多点拨。

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
40 [报告]
发表于 2005-11-29 15:22 |只看该作者
原帖由 qingmedia 于 2005-11-28 22:48 发表
我觉得大家应该讨论一下单一入口的各种实现技巧,而不是争论单一入口与多入口的优劣。

我琢磨的一个方案是这样的,指定一个目录如modules作为功能目录,每个功能作为该目录下的子目录如
modules/add/index.ph ...


你这是刻意的搞单一入口,象要完成指标一样,可以说毫无意义。
为什么是
modules/add/index.php
modules/edit/index.php
难道不可以
modules/add/add.php
modules/edit/edit.php
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP