对于一般的小型的应用,使用 require ,把需要的文件包含进来是可以的。但是如果是一个大型的应用,你可能需要包含一个很长的文件列表 ... 我们可能还需要去维护这个列表 ... 比如应用里面如果添加了新的类,你需要把这个类所在的文件也包含进来。这样会比较麻烦。
我们可以使用自动载入的方法来解决这个问题。也就是,在实例化类的时候,会去自动去载入它需要的文件。
下面,我们去创建一个新的 php 文件,可以叫它 Autoload.php
在这个文件里,需要用到 spl_autoload_register 这个函数 ... 这个函数里面的参数,就是自动载入类文件的一段代码 ... 这段代码也是一个函数 .. .
输入 spl_autoload_register() ... 这里我们用一个匿名函数 ... 这个函数支持一个参数 ... 也就是类的名称 ... 然后我们需要定义这个类的文件的路径 ... $path 等于 ... 可以用一个 dirname 函数,输出 Autoload.php 这个文件的路径 ... 两个下划线FILE接着两个下划线表示当前这个文件 ...
后面加上一个斜线 ... 然后是类的名称 ... 后面是文件的扩展名 ... 点 php
在下面,去判断一下,如果这个类的文件存在的话 ... 就把它包含进来 ...
我们再看一下这段代码。它的意思就是,当需要用到类的时候,就会调用这个 spl_autoload_register 函数 .. 类的名称会传递到这个函数里面 ... 然后我们定义了一个路径,这个路径就是,Autoload.php 这个文件所在的目录下面的以类的名称为文件名的 php 文件。
再判断一下这个文件是否存在,如果存在的话,就会把它包含进来。
回到 index.php ... 这样我们就可以去掉直接用 require 包含进来的类的文件了。只需要把 Autoload.php 包含进来就行了。
比如在实例化 Track 这个类的时候,PHP 会去调用 spl_autoload_register 这个函数 .. 然后把在 Autoload.php 所在目录下面的以这个类的名称命名的文件包含进来 ...
保存 ... 回到浏览器 ...
会输出同样的内容 ... 说明可以自动载入需要的类文件。