php工程化管理

news/2025/2/21 20:41:24/文章来源:https://www.cnblogs.com/tkzc2013/p/18725918

PHP 语言的包分类、定义与使用

PHP 的包管理主要依赖 Composer,它提供了高效的依赖管理机制,使开发者能够使用内置、第三方和自定义包。这里我们按照 内置包、第三方包、自定义本地包、本地包发布为第三方包 进行分类讲解。


A. 内置包

PHP 提供了大量的内置扩展(标准库),这些扩展无需额外安装,可以直接使用。例如:

  • 字符串处理mbstring, iconv
  • 数学计算bcmath, gmp
  • 文件操作fileinfo, spl
  • 数据库mysqli, PDO
  • 网络curl, sockets
  • 图像处理GD, Imagick

1. 直接使用内置包

示例:使用 mbstring 处理字符串

php
$str = "你好,PHP!"; echo mb_strlen($str, 'UTF-8'); // 输出字符长度

2. 检查 PHP 是否安装了某个内置扩展

php
if (extension_loaded('mbstring')) { echo "mbstring 扩展已启用"; } else { echo "mbstring 扩展未启用"; }

B. 第三方引入包

第三方包通常托管在 Packagist(PHP 官方的 Composer 包仓库),可以通过 Composer 进行安装和管理。

1. 安装第三方包

guzzlehttp/guzzle(HTTP 客户端)为例:

sh
composer require guzzlehttp/guzzle

2. 使用第三方包

php
require 'vendor/autoload.php'; use GuzzleHttp\Client; $client = new Client(); $response = $client->request('GET', 'https://jsonplaceholder.typicode.com/posts/1'); echo $response->getBody();

3. 管理第三方包

  • 查看已安装包
    sh
    composer show
  • 删除包
    sh
    composer remove guzzlehttp/guzzle
  • 更新所有包
    sh
    composer update

C. 自定义本地包

本地包可以存放在 packages/ 目录中,并在 composer.json 里进行注册。

1. 创建本地包

假设我们要创建一个 Logger 组件:

1.1 目录结构

pgsql
my_project/ │── composer.json │── packages/ │ └── mylogger/ │ ├── src/ │ │ └── Logger.php │ ├── composer.json │ ├── README.md

1.2 本地包 composer.json

packages/mylogger/composer.json 定义:

json
{ "name": "myvendor/mylogger", "description": "A simple logger package", "type": "library", "autoload": { "psr-4": { "MyLogger\\": "src/" } }, "require": { "php": ">=7.4" } }

1.3 代码实现 Logger.php

php
namespace MyLogger; class Logger { public static function log($message) { echo "[LOG]: " . $message . PHP_EOL; } }

1.4 在主项目 composer.json 中注册本地包

json
{ "require": { "myvendor/mylogger": "*" }, "repositories": [ { "type": "path", "url": "packages/mylogger" } ] }

1.5 安装本地包

sh
composer update

1.6 在项目中使用

php
require 'vendor/autoload.php'; use MyLogger\Logger; Logger::log("Hello from MyLogger!");

D. 本地包发布为第三方包

如果希望把本地包发布到 Packagist,需要按以下步骤操作:

1. 创建 GitHub 仓库

  • 在 GitHub 创建一个新仓库 mylogger
  • 在本地 packages/mylogger/ 目录下运行:
    sh
    git init git add . git commit -m "Initial commit" git remote add origin https://github.com/yourusername/mylogger.git git push -u origin main

2. 发布到 Packagist

  1. 访问 Packagist
  2. 登录并提交仓库地址,例如 https://github.com/yourusername/mylogger.git
  3. 点击 "Submit" 提交包
  4. 发布成功后,用户可以通过 Composer 直接安装:
    sh
    composer require myvendor/mylogger

3. 版本管理

使用 Git 发布新版本:

sh
git tag v1.0.0 git push origin v1.0.0

Packagist 会自动识别新的版本。


总结

分类说明示例
内置包 PHP 自带的扩展,无需安装 mbstring, curl, PDO
第三方引入包 通过 Composer 安装的外部库 guzzlehttp/guzzle, monolog/monolog
自定义本地包 在本地 packages/ 目录创建的 Composer 包 myvendor/mylogger
本地包发布为第三方包 上传到 GitHub,并注册到 Packagist 以供安装 composer require myvendor/mylogger

掌握这些包管理方式,可以让 PHP 开发更加高效、模块化!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887051.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制造行业CRM选哪家?中大型企业CRM首选纷享销客

在当今竞争激烈的制造行业中,企业对于客户关系管理(CRM)系统的需求日益增强,高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在众多CRM解决方案中,最终纷享销客凭借其卓越的功能性、高度的定制化能力以及出色的市场表现,成为了众多中大型企业首选的CRM…

6.2.6 特征映射和感受野

这里看英文原版更好语句更通顺,还有补充上面的图片其实就是想说明低层的CNN可以检测边缘什么的(右侧图像是中间的图像与左侧图像做卷积的结果)

MQ基础

MQ基础认识MQ结合JAVA客户端 依赖 <!--AMQP依赖,包含RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>配置文件 spring:rabbitmq:host: 8.2…

Excel 自动换行后批量设置单元格上下边距

excel 自动换行后 单元格的上下边距挨的很紧,看起来很不舒服 如下图 现在教大家 如何批量设置 单元格中有多行文本后的上下间距,设置成功后 如下图所示:具体步骤: 1、鼠标悬停在 excel 中的任意sheet(页签)上,右键 选择 查看代码 2、在弹出的 Visual Basic 编辑器弹框左…

开发者必备!Github Stars 存储库管理器!

gitstars —— 一个基于 Vite + Vue.js 构建的 GitHub Star 仓库管理器,旨在帮助开发者更好的管理、搜索、查阅收藏的开源项目。大家好,我是 Java陈序员。 Github 作为全球最大的开发者交流平台,拥有数不胜数的开源项目,我们会经常收藏一些开源项目,方便工作和学习。 但随…

1. Linux下 MySQL 的详细安装与使用

1. Linux下 MySQL 的详细安装与使用 @目录1. Linux下 MySQL 的详细安装与使用1. Linux 下安装 MySQL8.0 的详细安装步骤:2. Linxu 当中的MySQL 设置远程登录3. 最后:1. Linux 下安装 MySQL8.0 的详细安装步骤:查看是否安装过MySQL,如果你是用rpm安装, 检查一下RPM PACKAGE:…

临时编辑-----WordPress后台用户手册

登录 WordPress后台默认的登录链接是: https://yourdomain.com/wp-admin/ 输入你的账号(可以是邮箱,也可以是昵称)和密码,即可登录。然后就会进入到你的WordPress网站后台。 注意:忘记你的WordPress密码也不用太慌张,可以从服务器后台进入到WordPress后台。 进来的界面就…

15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用

15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用 @目录15. Docker容器监控之(CAdvisor+InfluxDB+Granfana)的详细安装和常规使用1. CAdvisor监控收集+InfluxDB存储数据+Granfana展示图表 的概述1.1 CAdvisor 监控收集1.2 InfluxDB 存储数据1.3 Granfana…

c#中GDI+使用贝塞尔曲线画一朵云

主要是路径的计算 先得到路径if (value.Width > 0 && value.Height > 0) {GraphicsPath.AddBezier(new PointF(RectangleF.Left + RectangleF.Width * 0.1f, RectangleF.Top + RectangleF.Height * 0.55f),new PointF(RectangleF.Left + RectangleF.Width * 0.1f…

如何让你的ida 地址就是RVA

如何让你的ida 地址就是RVA 原理:首先软件进入ida中的时候,其实就相当于把应用程序载入了内存中,RVA其实就是虚拟的便宜地址,也就是在内存中的地址,所以这里的RVA就是在ida中看到的地址-Imagebase Imagebase 其实就是基址。所以我们只需要把imagebase 设置为0即可拿到我…

c#GDI+实现类似油门踏板效果的自定义控件

先看效果图下面是代码protected override void OnPaint(PaintEventArgs e) {e.Graphics.SetGDIHigh();var rect = new Rectangle(0, 0, this.Width, this.Height);// 创建变换矩阵Matrix transformMatrix = new Matrix();// 使用平行四边形的方法近似梯形transformMatrix.Shear…

NocoBase 本周更新汇总:支持全局和批量数据触发自定义操作事件

本周更新包括:支持全局和批量数据触发自定义操作事件,支持数据表预置字段扩展等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含…