再谈 tp的 实例化 类 的自动加载
Posted noitanym
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再谈 tp的 实例化 类 的自动加载相关的知识,希望对你有一定的参考价值。
表示一个域名下的所有/任何主机 使用 的格式是: [*.] example.com
其中 , example.com
叫着 裸域名. (这个example.com/net/org不能被注册, 被保留) 其中 [*.] 中的 点 要放在 括号内.
tp的类自动加载, 总的来说 分两大类
- 一类是 使用 命名空间的, 这个也是 tp推荐的方式, 可以实现自动加载
- 另一类是 不使用 命名空间的.
要实现 自动加载, 需要遵循 以下规定:
- 是要用 命名空间 来定义;
- 是 类的命名要符合 规范, 包括 驼峰命名 和 类的后缀必须是 .class.php
- 是 类文件 的 物理位置 必须 和 命名空间的路径 一致.
- 只要按照上面的规定来做, 就可以实现 自动加载.
- 系统默认的 可以自动加载的类库是: 第一个是 框架的 Library下的 目录, 叫公共类库, 可以自动加载, 不需要任何说明的; 第二个是 应用类库, 即 Application项目目录下的所有目录, 包括模块目录,common目录, 或者你自己在 项目目录下创建的目录都叫 应用类库, 都可以实现 自动加载
- 另一个是 你自己增加的 /扩展的/ 注册命名空间: 使用 ‘AUTOLOAD_NAMESPACE‘ => array(...);
- 再一个是你 自己增加的 类/类库 映射, 在 项目的conf目录下创建的 alias.php 文件中的 映射.
加载的先后次序包括
首先检查 alias.php的类映射, 然后是 Library下的 公共类库, 然后是 你 注册的 扩展命名空间, 最后是 应用类库.
第二类就是 , 除了上面的 可以自动加载的 类库, 你想找挫折的时候, 要用 import(...) 来引入的类库(一个类文件, 最好就是 只包含一个 类的 定义)
- 没有使用 tp的规范 命名, 比如没有遵循 驼峰命名法.
- 类的扩展名不是 .class.php, 而是直接用 className.php 来命名的
- 没有使用 命名空间
- 虽然使用了命名空间, 但是 物理路径 /位置, 和 命名空间表示的 不一致.
这几种情况, 都可以用 import来做:
- import的格式
import(‘类名‘ [, ‘类的路径‘ [, ‘类的扩展名比如php‘]]
- 通常 import 可以自动识别的 类的 位置 是 公共类库 和应用类库的 位置 , 如果 不是这两个, 那么就要使用 第二个参数 指明 类的位置, 如果类的扩展名不是 .class.php 就要使用 ‘php‘
以上是关于再谈 tp的 实例化 类 的自动加载的主要内容,如果未能解决你的问题,请参考以下文章