1.自动加载函数库
在开发过程中,我们通常会将常用的函数封装起来,放在函数库中,以便实现代码复用。那么在thinkphp中如何定义加载自定义的函数库呢?
其实很简单,方法如下:
拿前台项目举例(这里前台项目名为:Index),我们首先需要在"/Index/Common/"目录下,创建一个名为common.php的文件,我们将自定义的函数放在该文件中,代码如下:
<?php
function p($array){
dump($array,1,'<pre>',0);
}
?>
至此,我们在函数库中就创建了一个名为p的函数了。接下来,就可以在控制器中调用了:
<?php
class IndexAction extends Action {
public function index(){
p($_SERVER);
}
}
然后在浏览器中,运行Index控制器的index()方法,我们可以看到正确的结果了。
接下来,试一下将刚刚定义的common.php文件重命名为function.php。重新运行,我们发现,程序出错了,错误提示为:”调用未定义方法p()“。也就是说程序找不到p方法了。那么,也就是说,当自定义函数时,必须将函数库名定义为common.php,不能定义为别的名称?其实不然,只是再命名为其他名称时,在加载时需要我们手动配置。
两种配置方法:
1.1.自动加载
该方法的配置相对复杂,但是其效果与将函数库名称命名为common.php相同,也就是在该函数库中定义的函数,可以在项目的全局使用。其配置方法如下:
修改项目配置文件”Index/Conf/config.php“,在array中修改’load_ext_file‘的值,将其修改为:你的函数库名称。如下:
再次运行项目,p()方法执行正确。<?php return array( 'load_ext_file' => 'function', ); ?>
1.2.临时加载
该方法配置简单,但是其作用域很小。配置方法如下:(记得将1.1中的修改恢复)在需要引用函数库的地方,调用load方法,如下:
<pre name="code" class="php"><?php class IndexAction extends Action { public function index(){ load('@.function'); p($_SERVER); } }
此时,再运行程序,p()方法执行正确。