Blogger Information
Blog 24
fans 4
comment 0
visits 20076
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
2.13 学号:478291 加载器与composer示例
Lin__
Original
761 people have browsed it

编写自动加载器

自动加载器遵循PSR-4标准,代码在运行时,实现查找PHP类、接口、Trait文件,并自动加载到当前脚本。但自动加载文件路径需与该文件中的代码的命名空间一一对应。

  • 示例:

加载器代码(autoloading.php):

  1. <?php
  2. namespace autoloading;
  3. //注册加载器
  4. spl_autoload_register(function($class){
  5. //设置项目的前缀
  6. $prefix = "autoloading\\";
  7. //设置具有项目前缀的类名的所对应的基目录
  8. $base_dir = __DIR__."\\";
  9. //去掉项目名称获取真实的类名称
  10. $real_name = substr($class,strlen($prefix));
  11. //将命名空间分隔符替换成当前系统目录分隔符
  12. $path = str_replace("\\",DIRECTORY_SEPARATOR,$real_name);
  13. //加上基目录以及PHP后缀
  14. $file = $base_dir . $path . ".php";
  15. //判断文件是否存在并进行文件加载
  16. if(file_exists($file)){
  17. require $file;
  18. }else{
  19. die("文件加载失败");
  20. }
  21. });

被加载文件代码(createUser.php):

  1. <?php
  2. namespace autoloading;
  3. class CreateUser
  4. {
  5. //生成随机数量的用户数据
  6. public static function create($num)
  7. {
  8. for($i = 0 ; $i < $num ; $i++){
  9. $user=[
  10. 'name' => chr(mt_rand(97,122)),
  11. 'age' => $i
  12. ];
  13. yield $i=>$user; //通过生成器逐条生成数据
  14. }
  15. return $user;
  16. }
  17. }

使用加载器文件代码(test.php):

  1. <?php
  2. namespace autoloading;
  3. use autoloading\CreateUser;
  4. require "autoloading.php";//引入自动加载器文件
  5. foreach (CreateUser::create(500) as $k => $v) {
  6. echo "<pre>" . print_r($v , true) . "</pre>";
  7. }

运行结果:

Composer应用示例

Composer,包(组件)依赖管理器,可以下载由第三方开发者编写的组件到项目中进行使用,下载的组件在vendor目录

  • Windows下载安装Composer

    打开网址:https://getcomposer.org/Composer-Setup.exe,下载Composer,下载完成后打开文件,一直点击为下一步完成安装

  • 查找下载组件

    打开网址:https://packagist.org/,这个网站提供全世界开发者编写的组件,本次使用到的是验证码组件,在搜索框输入chaptcha,找到gregwar/captcha,点击进入对应页面

    找到项目的目录位置,在地址栏输入cmd,回车打开终端,在命令行中输入composer require gregwar/captcha,即可下载成功对应的组件

  • 示例:

    1. <?php
    2. namespace composerTest;
    3. use Gregwar\Captcha\CaptchaBuilder;
    4. //引入自动加载器
    5. require __DIR__ . '\vendor\autoload.php';
    6. //实例化验证码类`
    7. $builder = new CaptchaBuilder;
    8. //生成验证码
    9. $builder->build();
    10. //生成内联验证码,放在内联标签:base64
    11. echo '<img src="' . $builder->inline() . '" onclick="location.reload()">';

    运行结果:

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