php,thinkphp自动加载怎么实现的呢?

php,thinkphp自动加载怎么实现的呢?,第1张

php 中有个魔术方法__autoload ,这个函数在找不到类的时候就会调用,自动加载就是在这里实现的。通过指定自动加载类的路径,只要保证文件名和类名一样。就可以自动加载。这也是为什么你看很多源码中类的名字和文件名一样的原因,这样可以实现自动加载,不需要include.

ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的。只要按照规范定义,都可以实现自动加载。

类库存放位置:

Think目录:系统核心类库

Org目录:第三方公共类库

这些目录下面的类库都可以自动加载,只要把相应的类库放入目录中,然后添加或者修改命名空间定义。你可以在Org/Util/目录下面添加一个Image.class.php

文件,然后添加命名空间如下:

namespace Org\Util

class Image {

}

这样,就可以用下面的方式直接实例化Image类了:$image = new \Org\Util\Image

公共类库除了在系统的Library目录之外,还可以自定义其他的命名空间,只需要注册一个新的命名空间,在应用或者模块配置文件中添加下面的设置参数:

'AUTOLOAD_NAMESPACE' =>array(

'Lib' =>APP_PATH.'Lib',

)

如果类库没有采用命名空间的话,需要使用import方法先加载类库文件,然后再进行实例化,例如:定义了一个Counter类(位于Com/Sina/Util/Counter.class.php):

import('Com.Sina.Util.Couter')

$object = new \Counter()

默认情况就会加载根目录下的配置文件。

在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:

惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置

以上是配置文件的加载顺序,因为后面的配置会覆盖之前的同名配置(在没有生效的前提下),所以配置的优先顺序从右到左。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8101181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存