博客列表 >PHP大牛成长之路:类的5中加载方式

PHP大牛成长之路:类的5中加载方式

周Sir-BLOG
周Sir-BLOG原创
2020年08月10日 15:40:01586浏览

文件目录如下:
IndexUser 两个类方法相同,均输出“PHP中文网欢迎您!方法是:xxx”

  1. namespace app\controller;
  2. use model\Users;
  3. class User
  4. {
  5. public static function show()
  6. {
  7. return 'PHP中文网欢迎您!方法是:'. self::getMethod();
  8. }
  9. public static function getMethod()
  10. {
  11. return __METHOD__;
  12. }
  13. }

加载方式1:传统方式:( 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();

加载方式2:注册自动加载函数 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();

加载方式3:composer中的自动加载(files文件方式)

  • 第1步:创建composer.json文件
  1. # composer.json
  2. {
  3. "autoload": {
  4. "files": [
  5. "app/controller/User.php",
  6. "app/controller/Index.php"
  7. ]
  8. }
  9. }
  • 第2步:打开vscode终端,输入安装命令

composer install

得到composer支持文件:autoload.php 及相关配置文件

  • 第3步:引用composer自动加载文件并显示
  1. // 3、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();

注意:当composer.json文件有更新, 需在终端执行命令: composer dumpautoload 命令, 使files字段生效。

加载方式4:composer中的自动加载(classmap类映射方式)

  • 第1步:创建composer.json文件
  1. # composer.json
  2. {
  3. "autoload": {
  4. "classmap": [
  5. "app/controller"
  6. ]
  7. }
  8. }
  • 第2步:打开vscode终端,输入安装命令

composer install

得到composer支持文件:autoload.php 及相关配置文件

  • 第3步:引用composer自动加载文件并显示
  1. // 3、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();

注意:当composer.json文件有更新, 需在终端执行命令: composer dumpautoload 命令, 使files字段生效。

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

  • 第1步:创建composer.json文件
  1. # composer.json
  2. {
  3. "autoload": {
  4. "psr-4": {
  5. "app\\controller\\": "app/controller"
  6. }
  7. }
  8. }
  • 第2步:打开vscode终端,输入安装命令

composer install

得到composer支持文件:autoload.php 及相关配置文件

  • 第3步:引用composer自动加载文件并显示
  1. // 3、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();

注意:当composer.json文件有更新, 需在终端执行命令: composer dumpautoload 命令, 使files字段生效。

以上5种加载方式均输出同样结果:

总结:

从以上类的5种加载方式可以看出,使用composer自动加载更方便(推荐:psr-4方式)

  • 传统方式使用include require require_once方式逐个调用,非常繁琐;

  • 注册自动加载函数 spl_autoload_register()使用非常方便,如果不想使用composer管理,推荐使用该方式;

  • composer三种方式:filesclassmappsr-4 方式,推荐使用psr-4 方式。

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