Blogger Information
Blog 40
fans 0
comment 1
visits 39692
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP 类的5种加载方式
Dong.
Original
1470 people have browsed it

一、 传统方式( include require require_once

  1. // 1、传统方式:( `include` `require` `require_once` )
  2. // ①加载类文件
  3. require_once 'app\controller\User.php';
  4. require_once 'app\controller\Index.php';
  5. // ②注册类别名[可选]
  6. use app\controller\User;
  7. use app\controller\Index;
  8. // ③调用类成员
  9. echo User::show();
  10. echo '<br>';
  11. echo Index::show();

二、 注册自动加载函数 spl_autoload_register()

  1. // 2、注册自动加载函数 `spl_autoload_register()`
  2. // ①加载类文件
  3. spl_autoload_register(function($class){
  4. // 获取类的路径名称
  5. // DIRECTORY_SEPARATOR 可以随操作系统不同,使用不同的目录分隔符
  6. $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
  7. // 生成一个完整的类文件名
  8. $classFile = __DIR__ . '/' . $path . '.php';
  9. // 加载类文件
  10. require $classFile;
  11. });
  12. // ②注册类别名[可选]
  13. use app\controller\User;
  14. use app\controller\Index;
  15. // ③调用类成员
  16. echo User::show();
  17. echo '<br>';
  18. echo Index::show();

三、 composer中的自动加载(files文件方式)

  1. # composer.json
  2. {
  3. "autoload": {
  4. "files": [
  5. "app/controller/User.php",
  6. "app/controller/Index.php"
  7. ]
  8. }
  9. }
  10. 得到composer支持文件:autoload.php 及相关配置文件
  11. // 3、composer中的自动加载(`files`方式)
  12. // ①加载类文件(引用composer自动加载文件)
  13. require_once __DIR__ . '/vendor/autoload.php';
  14. // ②注册类别名[可选]
  15. use app\controller\User;
  16. use app\controller\Index;
  17. // ③调用类成员
  18. echo User::show();
  19. echo '<br>';
  20. echo Index::show();

四、 composer中的自动加载(classmap类映射方式)

  1. //第1步:创建composer.json文件
  2. # composer.json
  3. {
  4. "autoload": {
  5. "classmap": [
  6. "app/controller"
  7. ]
  8. }
  9. }
  10. //第2步:打开vscode终端,输入安装命令
  11. //composer install
  12. // 3、composer中的自动加载(`files`方式)
  13. // ①加载类文件(引用composer自动加载文件)
  14. require_once __DIR__ . '/vendor/autoload.php';
  15. // ②注册类别名[可选]
  16. use app\controller\User;
  17. use app\controller\Index;
  18. // ③调用类成员
  19. echo User::show();
  20. echo '<br>';
  21. echo Index::show();

五、 composer中的自动加载(psr-4类映射方式)

  1. // composer中的自动加载(`files`方式)
  2. // ①加载类文件(引用composer自动加载文件)
  3. require_once __DIR__ . '/vendor/autoload.php';
  4. // ②注册类别名[可选]
  5. use app\controller\User;
  6. use app\controller\Index;
  7. // ③调用类成员
  8. echo User::show();
  9. echo '<br>';
  10. echo Index::show();

总结:

  • 传统方式使用include require require_once方式逐个调用,非常繁琐;
  • 注册自动加载函数 spl_autoload_register()使用非常方便,如果不想使用composer管理,推荐使用该方式;
  • composer三种方式:filesclassmappsr-4 方式,推荐使用psr-4 方式。
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:自动 加载的原理并不复杂, 关键是了解前提
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post