Composer 自动加载原理

Composer 自动加载原理 Composer 的自动加载本质是 动态加载类文件,它实现了“按需加载”的机制,避免了手动 require 每个类文件。 一、Composer 自动加载的核心 PHP 提供了 spl_autoload_register() 函数: spl_autoload_register(function ($class) { require 'src/' . str_replace('\\', '/', $class) . '.php'; }); 当你第一次使用一个类时,PHP 会调用这个函数。 $class 是你使用的类全名(包括命名空间)。 函数里通过规则找到对应文件并 require。 Composer 自动加载,就是在这个基础上做了 规范化管理。 二、Composer 生成的自动加载文件 安装依赖后,Composer 会生成: vendor/autoload.php vendor/composer/autoload_*.php vendor/autoload.php:入口文件,只需 require 一次。 vendor/composer/autoload_psr4.php:记录 PSR-4 命名空间 → 文件路径映射。 vendor/composer/autoload_classmap.php:记录 类名 → 文件路径,用于 classmap 加速加载。 vendor/composer/autoload_files.php:记录需要立即加载的文件(如全局函数库)。 vendor/autoload.php 的核心逻辑: require __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInit::getLoader(); ComposerAutoloaderInit::getLoader() 会: 初始化一个 ClassLoader 实例。 根据配置注册 PSR-4、PSR-0、classmap、files 自动加载函数到 PHP。 调用 spl_autoload_register() 注册这些函数。 三、PSR-4 自动加载机制 PSR-4 是 Composer 默认的推荐机制。 假设 composer....

November 15, 2022 · 1 min · Leanku

Guzzle

Guzzle HTTP 客户端全解析及 PHP 使用与优化 一、介绍 Guzzle 是 PHP 世界中最流行的 HTTP 客户端库之一,用于发送 HTTP/HTTPS 请求并处理响应。 它支持: 同步和异步请求 HTTP/2 中间件机制(类似 Laravel / Hyperf 的管道) 并发请求 请求重试、超时、连接池 Guzzle 常被用于调用第三方 API、微服务接口或爬取网页数据。 官方文档:https://docs.guzzlephp.org 二 、安装 composer require guzzlehttp/guzzle 三、基本使用 3.1 同步 GET 请求 use GuzzleHttp\Client; $client = new Client([ 'base_uri' => 'https://api.example.com', 'timeout' => 5.0, // 超时时间 ]); $response = $client->get('/users/1'); echo $response->getStatusCode(); // 200 echo $response->getBody(); // JSON 或 HTML 3.2 POST 请求与 JSON 数据 $response = $client->post('/users', [ 'json' => [ 'name' => 'John', 'email' => 'john@example....

November 15, 2022 · 2 min · Leanku

Netlify部署静态网站

关于Netlify 在它的主页上可以看到它的宣传语: 用最快的方式构建最快的网站。 官方文档 为什么选择Netlify 内置 CI/CD 支持自动构建拉取代码仓库,每次提交的自动构建并发布预览 能够托管服务免费 CDN 能够绑定自定义域名 能够启用免费的TLS证书启用HTTPS 提供 Webhooks 和 API 通过内置应用程序添加动态功能 部署一个静态网站就非常简单,此处以GitHub仓库为例 静态网站push到GitHub仓库 进入netlify 登录 直接使用GitHub账号,授权 创建网站 点击New site from Git 选择仓库 选择分支(Branch to deploy) 4.3 打包命令 (Build command)诸如 npm run build,gulp build 之类;如果本身已是静态文件,不需打包编译,这一栏则不填 4.4 打包后目录 (Publish directory)诸如 public,dist,_site 之类;如果本身已是静态文件,这一栏则不填 4.5 deploy site 设置域名 netlify会随机生成了一个netlify下的域名,我们可以更改其前缀,并绑定到我们自己的域名下: Site settings->Change site name 更换默认域名 Domain settings->Add custom domain添加域名,然后到域名服务商网站绑定的域名下添加一条CNAME解析,解析的主机记录即对应的netlify域名值(即 xx.netlify.com) 关于.netlify.toml自动部署参阅文档 https://docs.netlify.com/configure-builds/file-based-configuration/ 更多操作后续更新。。。

October 22, 2022 · 1 min · Leanku

Git版本升级

使用 Brew 对Mac系统Git进行版本升级 #安装最新的Git ➜ ~ brew install git #改变默认Git指向 ➜ ~ which git #/usr/bin/git ➜ ~ git --version #git version 2.24.1 (Apple Git-126) ➜ ~ brew link git --overwrite #新开终端查看版本 ➜ ~ git version #git version 2.38.1 可以看到,我们的 git 版本已经升级到最新版了

October 21, 2022 · 1 min · Leanku

Hello Hugo

Hugo 是用 Go 语言写的,支持多个平台 包括 Windows, Linux, FreeBSD 和 OS X (Darwin) for x64, i386 和 ARM architectures. 官方文档 为什么选择hugo 通过 Hugo 你可以快速搭建你的静态网站,比如博客系统、文档介绍、公司主页、产品介绍等等。相对于其他静态网站生成器来说,Hugo 具备如下特点: 极快的页面编译生成速度。( ~1 ms 每页面) 完全跨平台支持,可以运行在 Mac OS X, Linux, Windows, 以及更多! 安装方便 Installation 本地调试 Usage 时通过 LiveReload 自动即时刷新页面。 完全的皮肤支持。 可以部署在任何的支持 HTTP 的服务器上。 一.安装 下载最新的 release 版本 Hugo Releases, Windows, Linux, FreeBSD 和 OS X (Darwin) for x64, i386 和 ARM architectures. Windows安装时需要加入环境变量 Mac就比较方便直接执行:brew install hugo 安装成功之后的操作如下...

October 21, 2022 · 1 min · Leanku