批改状态:合格
老师批语:composer是php发展历程中的重要事件, 掌握它可以极大的方便以后开发工作
在调用某个命名空间中的类时,需要用include / require先加载类所在的文件,但这种方法有时效率低,不能实现按需加载;可用自动加载的方式来解决这个问题。下面演示类(自定义的类和composer中的类)的自动加载.
// 文件名load.php/***导入命名空间`src\home`中的User类,*导入文件`src\home\User.php` (windows系统)或者`src/home/User.php` (mac系统)*导入时通过`use App\edu\home\User;`调用*/namespace load;spl_autoload_register(function ($class){//导入的路径和实际路径进行映射$prefix = 'App\edu';$file = __DIR__ . '\\src\\' . substr($class, strlen($prefix)) . '.php';$file = str_replace("\\", DIRECTORY_SEPARATOR, $file);file_exists($file) ? require $file : '文件不存在,加载失败.';});
// 文件名 src\home\User.php;namespace src\home;class User{public static function test(): string{return __METHOD__;}}die(User::test());
// 文件名 main.phpnamespace main;use App\edu\home\User;require 'load.php';//触发自动加载器User::abc;
//运行main.php文件src\home\User::test
以composer引入验证码的项目gregwar/captcha为例
//windows安装步骤1. 从 `phpcomposer.com`中下载安装包'Composer-Setup.exe',根据提示安装;2. 如果安装包安装失败, 则从`phpcomposer.com`中下载 `composer.phar`文件 或 从阿里云下载 `mirrors.aliyun.com/composer/composer.phar`;3. 将`composer.phar`文件和`php.exe`文件放在同一目录;4. 新建`txt`文件,里面复制如下同容,另存为`composer.bat`文件:@php "%~dp0composer.phar" %5. 双击打开` composer.bat `文件6. 打开终端,输入:composer (如果失败,则定位到php.exe所在文件夹下,再输入composer)composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
//mac安装步骤打开终端,输入curl -sS https://getcomposer.org/installer | php (等待下载)sudo rm -f (此处输入密码)sudo mv composer.phar /usr/local/bin/composercomposer --versioncomposer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
1. 在搜索平台<https://packagist.org/>输入: chaptcha ,找到 'gregwar/captcha',打开链接2. 复制指令 composer require gregwar/captcha3. 打开终端,进入要操作的目录,粘贴指令,例如:cd "C:\phpstudy_pro\phpstudy_pro\WWW\php\0213"composer require gregwar/captcha
//文件名captcha.phpnamespace captcha;use Grewar\Captcha\CaptchaBuilder;//自动加载文件//vendor\gregwar\captcha\src\Grewar\Captcha\CaptchaBuilder.phprequire __DIR__ . 'vender\autoload.php';//实例化验证码类`$builder = new CaptchaBuilder;//生成验证码$builder->build();//生成内联验证码,放在内联标签:base64echo '<img src="' . $builder->inline() . '" onclick="location.reload()">';

composer项目自带加载器,直接调用就可以。自定义的自动加载器,语法如下:
spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool作用:注册给定的函数作为 __autoload 的实现参数:@ $autoload_function 欲注册的自动装载函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数spl_autoload()。@ throw 此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。@ prepend 如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号