博客列表 >PHP 类的5种加载方式

PHP 类的5种加载方式

Dong.
Dong.原创
2020年09月22日 20:46:151472浏览

一、 传统方式( 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 方式。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议