emlog的插件功能是通过挂载点和挂载函数实现的。程序在模板中预设许多挂载点用于让插件函数进行挂载。然后当页面执行到对应位置时会自动执行对应的插件函数,实现插件功能。
上面这段代码中,是用于加载所有插件的实现函数所在的文件的。这个路径被保存到了配置表中,当然这里使用的是缓存中的数据。这里的$emhooks是一个全局二维数组变量,保存的是各个挂载点中的插件函数名字。这段代码的目的是循环加载插件函数所在位置的文件,当后面需要执行对应函数时就不会出现找不到函数这种错误错误。可以看出来插件函数是公用的,你甚至可以在你的插件中调用别人的功能。
要实现插件功能,那么就需要先将自己的实现函数赋值到上面说到全局数组中,addAction这个函数就是用来完成这个操作的。第一个参数是挂载点,第二个参数是需要挂载的函数。可以看到重名函数是不能挂载上去的。这个函数会在第一图中执行包含文件操作时时被执行。这个步骤中插件功能不会执行,只做$emhooks的赋值操作。
最终实现插件功能的是doAction函数,这个函数就是文章开始时说到的挂载点。当代码执行到挂载点时,这个函数开始执行,执行绑定到挂载点上面的插件函数。最终实现博客程序的插件功能。
网友评论