日期:2011-09-13 浏览次数:20630 次
上一篇文章我提了一个问题,怎么实现自动载入一个类呢?
实际上PHP已经有相应的机制可以实现这个功能了,这个机制就是autoload,它会在试图使用尚未被定义的类时自动调用。
现在我们可以在Route.php中的开头定义autoload函数(当然,这样是不规范的,但是为了简单,先这么做)。
我们现在的自动导入需要导入两类文件,一类是框架类文件,另外一类是用户应用模块的类文件,为了简化代码,可以假设框架的所有文件都存放在/Library/Test目录下面,用户类文件都存放在/UserApps/Modules目录下面,并且只会在Controllers,Models,Helpers这三个目录下面,并且这几个目录下面没有子目录。
对于这个自动导入的函数,它需要首先尝试导入框架类文件,如果该文件不存在,说明是用户类文件,然后再尝试导入用户类文件,如果是,那么include它。
注意:
由于要频繁使用UserApps/Modules这个目录,所以我定义了一个MODULES_PATH这个常量;
01 | function __autoload($className) { |
02 | $frameworkFileName = FRAMEWORK_PATH . '/' . $className . '.php'; |
03 | if(is_file($frameworkFileName)) { |
04 | include $frameworkFileName; |
05 | } else { |
06 | //用户类文件 |
07 |
$controllerFileName = MODULES_PATH . '/Controllers/' . $className .&nb
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
|