站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
▼
建站程序
开发
服务器
办公软件
开发教程
▼
服务器教程
软件使用教程
运营教程
热门电子书
▼
CSS教程
WordPress教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
热点词条
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Gallery:嵌入:基于事件的松耦合整合
”(章节)
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
=== 主应用程序 === 主应用程序是接受并处理用户请求并服务于结果页面的主要应用程序。典型的例子就是内容管理系统CMS。 接着让我们假设主应用程序是模块化的,开发者可以使用插件(或模块,扩展及组件等)进行功能上的扩充。要在主应用程序中嵌入一个仆应用程序,如一个论坛或相片管理系统,你就要为主应用程序编写一个新插件。该插件包括一个小的封包脚本用于与仆应用程序进行交流。 ==== 封包脚本 ==== 封包脚本(wrapper script)样例: $userId = getUserId(); // 获取主应用程序中当前活动用户的userId $baseUrl = getBaseUrl(); // 获取所有指向主应用程序URL的base URL include('some/path/to/slaveApplication/embed.php'); // 包括仆应用程序所暴露的接口 embed_init($userId, $baseUrl); // 使用经验证的用户和base URL初始化仆应用程序 $html = embed_run(); // 使仆应用程序处理当前请求并返回结果HTML 接着主应用程序就会将生成的$html接入其某个模板中并返回给用户完全渲染过的页面。 ==== 事件同步 ==== 我们还假设主应用程序具有一个内置事件或hook系统,能够允许其插件在事件发生时执行自己的代码,这些事件包括用户的创建,登入或配置的变更。某颇具说明性事件系统的实现就像这样:(我们不提倡使用global,但它们的代表性很强) function create_user($username, $password) { ... // create the user as usual global $hooks; if (!empty($hooks[CREATE_USER])) { // 检查是否存在任何已注册的事件侦听器或挂钩 foreach ($hooks[CREATE_USER] as $event_handler) { $event_handler->handle_event($username, $password); } } } 主应用程序某插件可按如下方式注册一个事件处理器: $GLOBALS['hooks'][CREATE_USER][] = new my_create_user_handler(); 而处理器本身就如: class my_create_user_handler { function handle_event($username, $password) { // 将用户创建与我们嵌入的应用程序同步 include('path/to/slaveApplication/embed.php'); // 包括仆应用程序的接口 embed_init(); // 初始化仆应用程序 embed_create_user($username, $password); // 在嵌入的应用程序中创建用户 } } 当然你不能以这种方式实现一个事件/挂钩系统。但重要的是,主应用程序中某用户被创建的事件以及主应用程序的插件可以将自己注册为事件侦听器或挂入核心功能,这样它们就能够在某用户被创建时执行embed_create_user()函数了。
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)