登录  /  注册
博主信息
博文 24
粉丝 4
评论 0
访问量 19417
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
2.13 学号:478291 加载器与composer示例
Lin__
原创
730人浏览过

编写自动加载器

自动加载器遵循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()">';

    运行结果:

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:坚持学习好
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学