[PHP] 如何在 FleaPHP 的基础上扩展自己的类
比如我对fleaphp的FLEA_Help_Pager类的getPagerData()方法不满意,想从FLEA_Help_Pager类派生出我自己的My_Pager
请问我该如何修改,才能让应用程序的改动尽可能的小。
目的如下:
1, 保持FLEA框架的所有文件不变,因为我还期待着flea的下次升级呢,升级后会把我的修改覆盖回去的
2, 已经做好的应用程序改动最小。最好是只用把 FLEA_Help_Pager改为My_Pager就ok,
请问下,这个目的能达到吗?
=================================
自己写一个 My_Pager 从 FLEA_Helper_Pager 继承就行了
你在你的文件开头这样写:
FLEA::loadClass('FLEA_Helper_Pager');
class My_Pager extends FLEA_Helper_Pager
然后把 My_Pager 的文件放到 FLEA 目录之外。
=================================
仔细研究了一下源代码,问题是解决了,分享下我的心得
在index.php的run()之前 dump($GLOBALS);exit;
输出中有下面的内容:
[CLASS_PATH] => Array
(
[0] => F:\wamp\www\TMisFrame\WebLibs\Class\FLEA
[1] => ../WebLibs/App
)
原来fleaphp在运行之初就将路径信息保存在了 $GLOBALS[__FLEA_CORE__] [CLASS_PATH] 之中。
进一步研究,发现原来是function import($path)函数导致的。
所以,如果要扩展自己的类库,便应该在 import($path)函数的参数$path指定的路径中放置自己的扩展类文件。
比如,我对FLEA_Helper_Pager类扩展为myFrame_Pager类,增加了getPages方法,在index.php文件中有如下定义:
import("../WebLibs/App");
所以在../WebLibs/App目录下增加myFrame目录,Pager.php文件就放在../WebLibs/App/myFrame目录下。
这样做的好处如下:
1,保持了fleaphp框架目录的完整,以后fleaphp的升级只要直接copy覆盖掉原来的flea目录就行,而不用修改fleaphp的源代码
2,在程序中保证了应用的简单性,完全可以像使用flea的核心类一样使用自己定义的类,只要简单的load_class('myFrame_Pager');