Blogger Information
Blog 29
fans 0
comment 0
visits 19805
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
自动加载器和composer的使用- PHP培训十期线上班
手机用户1576673622
Original
712 people have browsed it

在调用某个命名空间中的类时,需要用include / require先加载类所在的文件,但这种方法有时效率低,不能实现按需加载;可用自动加载的方式来解决这个问题。下面演示类(自定义的类和composer中的类)的自动加载.

一、自定义自动加载器, 遵循psr-4标准

1. 自动加载器
  1. // 文件名load.php
  2. /**
  3. *导入命名空间`src\home`中的User类,
  4. *导入文件`src\home\User.php` (windows系统)或者`src/home/User.php` (mac系统)
  5. *导入时通过`use App\edu\home\User;`调用
  6. */
  7. namespace load;
  8. spl_autoload_register(function ($class)
  9. {
  10. //导入的路径和实际路径进行映射
  11. $prefix = 'App\edu';
  12. $file = __DIR__ . '\\src\\' . substr($class, strlen($prefix)) . '.php';
  13. $file = str_replace("\\", DIRECTORY_SEPARATOR, $file);
  14. file_exists($file) ? require $file : '文件不存在,加载失败.';
  15. });
2. 要加载的文件
  1. // 文件名 src\home\User.php;
  2. namespace src\home;
  3. class User
  4. {
  5. public static function test(): string
  6. {
  7. return __METHOD__;
  8. }
  9. }
  10. die(User::test());
3.调用
  1. // 文件名 main.php
  2. namespace main;
  3. use App\edu\home\User;
  4. require 'load.php';
  5. //触发自动加载器
  6. User::abc;
结果
  1. //运行main.php文件
  2. src\home\User::test

二、composer的安装和引入项目的方式

以composer引入验证码的项目gregwar/captcha为例

1. composer的安装
  1. //windows安装步骤
  2. 1. `phpcomposer.com`中下载安装包'Composer-Setup.exe',根据提示安装;
  3. 2. 如果安装包安装失败, 则从`phpcomposer.com`中下载 `composer.phar`文件 从阿里云下载 `mirrors.aliyun.com/composer/composer.phar`;
  4. 3. `composer.phar`文件和`php.exe`文件放在同一目录;
  5. 4. 新建`txt`文件,里面复制如下同容,另存为`composer.bat`文件:
  6. @php "%~dp0composer.phar" %
  7. 5. 双击打开` composer.bat `文件
  8. 6. 打开终端,输入:
  9. composer (如果失败,则定位到php.exe所在文件夹下,再输入composer)
  10. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  1. //mac安装步骤
  2. 打开终端,输入
  3. curl -sS https://getcomposer.org/installer | php (等待下载)
  4. sudo rm -f (此处输入密码)
  5. sudo mv composer.phar /usr/local/bin/composer
  6. composer --version
  7. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
2. gregwar/captcha的安装
  1. 1. 在搜索平台<https://packagist.org/>输入: chaptcha ,找到 'gregwar/captcha',打开链接
  2. 2. 复制指令 composer require gregwar/captcha
  3. 3. 打开终端,进入要操作的目录,粘贴指令,例如:
  4. cd "C:\phpstudy_pro\phpstudy_pro\WWW\php\0213"
  5. composer require gregwar/captcha
3. 引入项目
调用
  1. //文件名captcha.php
  2. namespace captcha;
  3. use Grewar\Captcha\CaptchaBuilder;
  4. //自动加载文件
  5. //vendor\gregwar\captcha\src\Grewar\Captcha\CaptchaBuilder.php
  6. require __DIR__ . 'vender\autoload.php';
  7. //实例化验证码类`
  8. $builder = new CaptchaBuilder;
  9. //生成验证码
  10. $builder->build();
  11. //生成内联验证码,放在内联标签:base64
  12. echo '<img src="' . $builder->inline() . '" onclick="location.reload()">';
结果

结语

composer项目自带加载器,直接调用就可以。自定义的自动加载器,语法如下:

  1. spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool
  2. 作用:注册给定的函数作为 __autoload 的实现
  3. 参数:
  4. @ $autoload_function 欲注册的自动装载函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数spl_autoload()。
  5. @ throw 此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。
  6. @ prepend 如果是 truespl_autoload_register() 会添加函数到队列之首,而不是队列尾部。
  7. 返回值:成功时返回 TRUE 或者在失败时返回 FALSE
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:composer是php发展历程中的重要事件, 掌握它可以极大的方便以后开发工作
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