您的当前位置:首页>全部文章>文章详情

【PHP】php手动加载vendor第三方库

CrazyPanda发表于:2024-03-01 16:25:37浏览:355次TAG:

方式一:手动配置autoload文件

方式二:在composer.json 中 调整 autoload

场景

不知道做php开发的小伙伴有没有遇到这样的痛点:使用第三方框架时安装的依赖包,你接手时候执行 composer update/insetall 时候总是超时或者安装时候总是报某个依赖包于其冲突。导致浪费大量时间去调整,最终无功而返。

场景复现:

我在一个旧的项目包上,想下载一个依赖包,执行安装时,总是包版本和现在不兼容或者一些依赖的问题。切换了镜像也是如此,所以考虑不如手动安装来的快~

方案

只需要手动调整自动加载配置即可。

实现

方式一:手动配置autoload文件

第一步:将下载的依赖包放到vendor目录下

放到vendor下的随便位置,你开心就好

第二步:修改 autoload_psr4.php 文件

文件位置位于:vendor/composer/autoload_psr4.php
v2-7de8a9beb97e05bdeca6973dfe95306d_720w.webp
autoload_psr4.php

将自己的依赖包填写上去,如下:

假设加载的命名空间为:yii\layui\ ,那么将其配置指向的目录文件,$vendorDir 是vendor 目录地址。
v2-7de8a9beb97e05bdeca6973dfe95306d_720w.webp
autoload_psr4.php

第三步:修改autoload_static.php 文件,添加依赖包信息配置

文件位置位于:vendor/composer/autoload_static.php
v2-7de8a9beb97e05bdeca6973dfe95306d_720w.webp
autoload_static.php

找到变量:$prefixLengthsPsr4 将上一步手动添加的依赖包命名空间首字母,如:yii/layui 首字母为Y,放到 Y 数组内,如下:

如果没有,就造出来一个字母变量,包含在里面即可,命名空间尾部为:”// “结尾,写法:命名空间 => 重权整型
v2-7de8a9beb97e05bdeca6973dfe95306d_720w.webp
$prefixLengthsPsr4 变量

第四步:找到 文件映射目录数组变量:$prefixDirsPsr4 配置映射目录:

写法:命名空间 => 映射目录数组
v2-7de8a9beb97e05bdeca6973dfe95306d_720w.webp
$prefixDirsPsr4

修改完以上就可以加载了,在项目中使用 yii/layui/xxxx 即可.

方式二:在composer.json 中 调整 autoload

这个方法我没成功过,不知道是不是我配置有问题,未去深究。你们可以试试。

第一步:配置autoload

// 位置 ~/project/composer.json

"autoload": {
        // 需要引入包的位置
	"psr4":[
          "yii\\layui\\" => "src\" 
        ]
},

第二步:更新类自动加载

进入项目目录下执行
composer dump-autoload -o


原文链接https://zhuanlan.zhihu.com/p/597646734?utm_id=0

猜你喜欢

【PHP】tp使用lunar-php,获取节日节气
lunar-php 是一个用于获取公历和农历(即阳历和阴历)信息的 PHP 库。要使用 lunar-php 获取节日和节气,你需要先安装这个库。 首先,通过 Composer 安装 lunar-php:composer require chenmingl/lunar-php获取阳历阴历节日及节气:require 'vendor/autoload.php';   use Lunar\Lunar;   //&nbs
发表于:2024-04-09 浏览:315 TAG:
【PHP】生成二维码海报
目录1.版本2.安装扩展3.生成海报4.代码解释5.附一个字体文件 6.参考文档1.版本php:7.2+ ,本示例使用的是7.3endroid/qr-code :4.* ,本示例使用的是4.3intervention/image:2.* ,本示例使用的是2.7使用前检查下是否启用了 gd2 扩展2.安装扩展composer require endroid/qr-codecomposer require intervention/image3.生成海报<? php &nb
发表于:2023-12-02 浏览:779 TAG:
【PHP】构建一个在线视频网站
PHP是一种广泛应用的开发语言,被用于构建许多各种类型的网站和应用程序。在本文中,将介绍使用PHP开发一个在线视频网站的流程。第一步:需求分析在开始开发之前,首先需要进行需求分析。这包括确定网站的主要功能和特性,例如用户注册、视频上传、视频播放等。还需要确定网站的目标用户和受众群体,以及预期的规模和流量。通过深入了解需求,可以为后续的开发工作提供指导。第二步:数据库设计在构建一个在线视频网站时,一个关键的步骤是设计数据库。数据库将存储用户信息、视频信息、评论、标签等相关数据。需要确定表
发表于:2023-12-25 浏览:291 TAG:
【PHP】php代码规范七大原则
hp代码规范七大原则包括一致性、可读性、简洁性、可复用性、可测试性、安全性和性能。详细介绍:1、一致性,代码应该保持一致性,即在整个代码库中使用相同的命名规范、缩进风格、代码注释等,这样可以使团队成员更容易理解和阅读代码,减少出错和混淆的可能性;2、可读性,代码应该易于阅读和理解,为了提高可读性,可以使用有意义的变量和函数命名,避免使用过于复杂的表达式和嵌套结构等等。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。在PHP开发中,遵循良好的代码规范是非常重要
发表于:2024-03-17 浏览:304 TAG:
【PHP】PHP8中支持数组的新函数,让数组操作变得更加便捷
PHP是一种常用的Web编程语言,已经成为了众多Web应用的首选开发语言。在PHP8中,新增了不少有用的函数和特性,其中一个十分值得关注的改变就是对数组操作的优化。PHP8中新增了许多针对数组的函数,使得开发者可以更易于编写高效的代码并减少代码中的常见错误。在本文中,我们将介绍PHP8中一些有用的数组函数,并展示如何使用它们来提高自己的PHP编程技能。array_is_list()函数array_is_list()函数用于检查一个数组是否是“列表数组”,即数组中的索引是否是从0开始、且连续递增的
发表于:2024-01-07 浏览:340 TAG:
【RabbitMQ】RabbitMQ五种消息模型
‌RabbitMQ提供了五种消息模型,分别是基本消息模型、工作模型、Fanout订阅模型、Direct订阅模型和Topic订阅模型‌。这些模型在消息的发送、路由和消费方式上有所不同,适用于不同的应用场景。‌
发表于:2025-02-08 浏览:90 TAG: #RabbitMQ
【PHP】php函数find的用法
在php的开发中,有很多常用函数可以帮助我们快速完成一些操作,其中常用的一个函数是find函数。这个函数的作用是用于查找字符串中的特定字符或子字符串。本篇文章将详细介绍php函数find的用法。基本语法find函数的基本语法非常简单,只需要在字符串中调用该函数并传递要查找的字符或子字符串作为参数即可。例如:$string = "Hello World!"; $find = "W"; $result
发表于:2023-12-29 浏览:307 TAG:
【PHP】详解ThinkPHP5实现极验滑动验证码geetest功能
下面由thinkphp教程栏目给大家详解ThinkPHP5实现极验滑动验证码geetest功能,希望对需要的朋友有所帮助!ThinkPHP5实现极验滑动验证码geetest功能现在很多网站,比如淘宝,京东等都改用使用极验拖动验证码实现登录,这种方式比传统的验证码方式有更好的体验,减少用户输入的错误,也同样能起到防盗刷的功能。现在很多极验都是第三方的,也很多都是收费的。这里主要介绍thinkphp整合系列之极验滑动验证码geetest,官网:http://www.geetest.com具
发表于:2023-12-28 浏览:311 TAG:
【PHP】设计模式的六大原则
设计模式的六大原则是指导软件开发设计的核心原则,它们帮助开发人员创建可维护、可扩展和灵活的软件系统。这些原则包括: ‌    单一职责原则(Single Responsibility Principle, SRP):一个类应该只有一个引起它变化的原因。这有助于减少类与类之间的耦合,提高类的内聚性和可读性。 ‌    开闭原则(Open-Closed Principle, OCP):软件实体(如类、
发表于:2024-07-16 浏览:278 TAG:
【PHP】php判断字符串是否含有日文字符
可以使用PHP的正则表达式函数preg_match()来检测字符串上的日文字符。以下是一个例子:$str = "こんにちは、世界!"; if (preg_match('/\p{Hiragana}|\p{Katakana}|\p{Han}/u', $str))  {     echo "字符串包含日文字符。"; }  else&nbs
发表于:2023-12-13 浏览:307 TAG: