`
dcj3sjt126com
  • 浏览: 1871334 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP中钩子函数的实现与认识

    博客分类:
  • PHP
php 
阅读更多

假如有这么一段程序:

  1. function fun(){
  2. fun1();
  3. fun2();
  4. }

  首先程序执行完fun1()之后执行fun2()然后fun()结束。

  但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。

  我们可以在function fun(){}中加入一个挂钩点H,然后再执行H这个函数之前,将钩子函数配置好,我么就可以根据需要来解析了。

例如:

  1. $h=config_item("parser_fun");//从配置文件中获得相应的配置信息
  2. function fun($data){
  3. global $h;
  4. return $h();
  5. }

  除此意外,PHP还可以根据字符串提供自己的类,然后调用类的一个方法,传递某些参数,这些就为PHP程序的编写,以及后期的维护扩展奠定了,相当坚实的基础。

  1. $c=get_class_name();//获得类的名字
  2. $m=get_method_name();//获得方法的名字
  3. $k=$c->$m();//执行类的某一个方法

原文链接:PHP中钩子函数&实现

 


  • 1、钩子函数是预设并在特定的条件下触发的。
  • 2、钩子函数接管程序后可以影响到程序的走向。

  钩子的完整实现应该叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给未来可能发生的“事件”起一个名字,简单的实现方法是用单例模式产生一个持久的对象或者注册一个全局变量,然后将事件名称,以及该事件对应的类与方法插入全局变量即可。也就是挂载一个钩子。

  第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后找到注册好的类与方法,实例化并运行。这样子就可以摆脱传统方式中程序必须按顺序的规则,进一步实现解除耦合的目的。

  钩子函数可以截获并处理其他应用程序的消息。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

分享到:
评论

相关推荐

    php钩子示例-认识php钩子

    PHP钩子本质上是程序执行流程中的特定点,开发者可以在这些点挂载自定义的函数或者类方法,以实现对程序行为的控制。这些挂载的函数称为“动作”或“过滤器”。 2. **PHP钩子的类型** - **动作钩子**:当PHP程序...

    PHP实例开发源码—php博客源码 WordPress正式版.zip

    6. **函数和钩子**:WordPress的函数库非常庞大,如get_post(), the_content()等,它们提供了丰富的功能接口。同时,WordPress的钩子系统允许在特定程序执行点插入自定义代码,如add_action()和add_filter()。 7. *...

    wordpress二次元小清新风格主题模板源码

    `functions.php`是主题的核心功能文件,包含了许多主题特有的函数和钩子。通过在此文件中添加或修改代码,你可以扩展主题的功能,如添加自定义小工具、注册侧边栏、集成社交媒体分享等。 `page.php`则是页面模板,...

    Learning.Drupal.6.Module.Development

    首先,书中介绍了Drupal的基本概念和架构,帮助读者建立起对Drupal生态系统的基本认识。接着,通过一系列实践案例,详细讲解了如何使用PHP开发模块,涵盖了模块的结构、函数钩子、表单API、节点API等关键概念。最后...

    DISCUZ插件开发新手入门

    钩子创建与应用** - 新增钩子,配置其执行位置和代码逻辑。 - 将钩子设为可用,确保其在系统运行时生效。 #### 结语 插件开发是DISCUZ系统生命力的重要来源,掌握其开发流程和技术细节,能够帮助开发者高效地...

    basic-cms:通过基本的cms学习PHP

    PHP中的URL路由可以让你定义规则,将特定的URL映射到相应的控制器方法,实现灵活的页面管理。 5. 模板引擎 模板引擎允许开发者分离业务逻辑和视图,如Smarty或Twig。它们提供了一种简洁的方式来渲染HTML,同时保持...

    wptutorialsource-源码.rar

    源码中可能会展示如何注册和调用动作钩子(actions)和过滤器钩子(filters),这对于理解WordPress的事件驱动编程至关重要。 5. **模板层次结构**: WordPress的模板层次结构决定了如何根据不同的页面类型和URL...

    强大的二次元wordpress主题Sakurairo

    7. `functions.php`:这是WordPress主题的核心文件之一,包含了主题的自定义函数和钩子,通过它可以扩展WordPress的功能,实现主题的个性化定制。 总的来说,Sakurairo主题是一款面向二次元爱好者的WordPress主题,...

    ThinkPHP5控制器从入门到精通

    行为和钩子是ThinkPHP提供的扩展机制,可以通过注册行为或钩子函数来扩展控制器的功能。这种方式既灵活又高效,非常适合大型项目的开发。 #### 十二、附录 - **附录A:常见问题**:总结了在使用控制器过程中遇到的...

    让WordPress媒体库识别.pdf文件的方法

    具体到实现步骤,我们需要在functions.php文件中定义一个函数modify_post_mime_types,该函数接收一个参数$post_mime_types,这是一个包含已识别MIME类型的数组。在这个函数中,我们向数组中添加一个新的键值对,键...

    matlab提取文件要素代码-enlighter:WordPress.org插件镜像

    2. **元数据提取**: 若要获取文件的元数据,如创建日期、修改日期、大小等,Matlab并不直接支持,但可以通过操作系统API调用来实现,比如在Windows系统中可以使用`system`函数执行命令行命令来获取这些信息。...

Global site tag (gtag.js) - Google Analytics