Deprecated
: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in
/www/wwwroot/testblog.58heshihu.com/var/Widget/Archive.php
on line
1057
首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
7
篇与
的结果
2023-08-12
Hyperf 3.0
Hyperf 3.0回顾在过去的一年半时间里,Hyperf 2.2 共发布了 35 个小版本,使 Hyperf 达到了一个前所未有的高度,这里也获得了一些不错的数据反馈。Hyperf 在 GitHub 和 Gitee 上的关注度也得到了显著提升,分别获得了 4.9k 和 791 个 star,整体关注度增长也很稳定。Hyperf 框架的安装量也达到了 90万次,每天都有约 1300次的安装,这也表明了 Hyperf 已经广泛应用于相关行业中并支撑了大量的系统运行。Hyperf 组织下的有效 repo 更是达到了约 140个(去除掉 Archive 项目后),维护工作量空前巨大,但迭代仍然高频。感谢 Hyperf 团队全体成员的辛勤以及贡献,同时也感谢所有的 PR 贡献者,没有你们的参与也就没有今天的 Hyperf。Thanks ALL ContributorsHyperf 3.0 新时代Hyperf 3.0 带来了很多非常有意思的新能力,其中一些新能力不乏是 PHP 领域里面前所未有的,当然这些新能力也脱离不了其他开源社区的积极发展,包括但不限于 PHP、Swoole、Swow、PHPMicro、DTM、Seata 等开源社区,也衷心希望大家在闲暇时间可以为这些开源社区也贡献出自己的一份力,搭上一砖一瓦,共建更加美好的未来。原生注解 (Attribute)随着 PHP 8.1、8.2 的发布,给 PHP 带来了很多新的特性,其中与 Hyperf 最为相关的就是 PHP 的原生注解(Attribute) 了,Hyperf 3.0 也放弃了过往采用的基于注释解析的注解功能实现,转而采用 PHP 的原生注解,当然对应依赖的 PHP 版本,也将调整为最低要求 PHP 8.0。我们以一个最简单的 Controller 案例来呈现新的原生注解的使用:<?phpdeclare(strict_types=1);namespace App\Controller;use Hyperf\HttpServer\Contract\RequestInterface;use Hyperf\HttpServer\Annotation\Controller;use Hyperf\HttpServer\Annotation\RequestMapping;[Controller]class IndexController{// Hyperf 会自动为此方法生成一个 /index/index 的路由,允许通过 GET 或 POST 方式请求 #[RequestMapping(path: "index", methods: "get,post")] public function index(RequestInterface $request) { // 从请求中获得 id 参数 $id = $request->input('id', 1); return (string)$id; }}同时随着原生注解的应用,在 3.0 中也能够支持在同一个位置重复应用同一个注解了,比如过往在一个 Controller Action 想要应用多个 Middleware 时,需要通过 @Middlewares 注解包含多个 @Middleware 注解实现应用,而在 3.0 则可直接书写多个 @Middleware 注解实现该应用。同时在 3.0 中,注解也可以应用在方法的参数上,以实现一些针对方法参数定义、参数解析等功能。从 注释注解 调整为 原生注解,也无需担忧过往项目的迁移改造工作量,Hyperf 也提供了对应的工具一键自动转换,只需要在 2.2 时引入 hyperf/code-generator 组件,并执行 php bin/hyperf.php code:generate -D app 命令,即可将 app 文件夹内的注释注解自动转为原生注解,轻松省力~分布式事务在过去的一年里,Hyperf 团队也为 PHP 领域孵化了两个前所未有的分布式事务组件并贡献到对应的开源社区,对应 DTM (首个基于 Go 语言实现的流行分布式事务管理器) 与 Seata (由阿里巴巴开源的流行分布式事务管理器) 两款主流的开源分布式事务管理器,分别是 dtm-php/dtm-client 和 seata/seata-php ,其中 dtm-php 是实现了 dtm 完整功能的分布式事务客户端,已支持 TCC模式、Saga、XA、二阶段消息模式的分布式事务模式,并分别实现了与 DTM Server 以 HTTP 协议 或 gRPC 协议 通讯,该客户端可安全运行于 PHP-FPM 和 Swoole 协程环境中,更是对 Hyperf 框架做了更加易用的功能支持,可应用于生产环境中,而 seata-php 仍在开发迭代中,尚未能用于生产环境,也希望能有更多人参与进来共同迭代。我们也以一个简单的例子来说明如何在 Hyperf 中实现一个 TCC 分布式事务的调用,其它分布式事务模式可查阅 dtm-php repo 的 README 文件,或 Hyperf 3.0 文档关于分布式事务一章。<?phpnamespace App\Controller;use DtmClient\TCC;use DtmClient\TransContext;use Hyperf\Di\Annotation\Inject;use Hyperf\HttpServer\Annotation\Controller;use Hyperf\HttpServer\Annotation\GetMapping;use Throwable;[Controller(prefix: '/tcc')]class TccController{protected string $serviceUri = 'http://127.0.0.1:9501'; #[Inject] protected TCC $tcc; #[GetMapping(path: 'successCase')] public function successCase() { try { $this->tcc->globalTransaction(function (TCC $tcc) { // 创建子事务 A 的调用数据 $tcc->callBranch( // 调用 Try 方法的参数 ['amount' => 30], // Try 方法的 URL $this->serviceUri . '/tcc/transA/try', // Confirm 方法的 URL $this->serviceUri . '/tcc/transA/confirm', // Cancel 方法的 URL $this->serviceUri . '/tcc/transA/cancel' ); // 创建子事务 B 的调用数据,以此类推 $tcc->callBranch( ['amount' => 30], $this->serviceUri . '/tcc/transB/try', $this->serviceUri . '/tcc/transB/confirm', $this->serviceUri . '/tcc/transB/cancel' ); }); } catch (Throwable $e) { var_dump($e->getMessage(), $e->getTraceAsString()); } // 通过 TransContext::getGid() 获得 全局事务ID 并返回 return TransContext::getGid(); } }至于其它事务模式,如 Saga、XA、二阶段消息模式等,可以具体查阅 dtm-php/dtm-client 仓库的 Readme 文件或 Hyperf 3.0 的相关文档。Swow 网络引擎实际上在 Hyperf 2.2 中,就已经支持了 Swow 网络引擎的运行,随着 Swow 1.0 正式版的发布,在 Hyperf 3.0 中,我们也把 Swow 的应用提高到了一个更高的高度,Swow 实现了一套有史以来最完整的 PHP 协程模型,它全面释放了 PHP 的真正实力,使得开发者可以做到以往难以想象的事情,对比 Swoole 它具备更好的兼容性、可调试性、可编程性,它甚至能使 Hyperf 运行于原生 Windows 环境下而无需借助 WSL 或 Docker,同时也提供了 SDB 和 Watchdog 工具对协程运行进行调试和监控,极大的提升了 Hyperf 的可调试性。我们提供了一个全新的 Skeleton 骨架项目用于快速创建一个基于 Swow 网络引擎的 Hyperf 应用,以下是一个简单的通过 Composer 创建应用的流程:composer create-project hyperf/swow-skeleton:dev-master 创建后,确保您的 PHP 环境已经安装好了 Swow 扩展,便可直接通过 php bin/hyperf.php start 命令启动服务,整体使用与原来无异,Hyperf 底层已做好了适配。在 Windows 环境中也只需在 CMD 或者 Poweshell 中运行即可哦~SDB 协程调试器SDB 是一款使用 PHP 语言编写的协程调试器工具,使用上类似于 GDB,它具有以下的几个优点:使用简单,只需要一行代码即可开启;无需端口,可直接运行在 TTY 上;零成本,可在生产环境使用,不影响性能;功能强大,深度定制,量身打造类微型操作系统;通过 SDB,您可以对运行中的 Hyperf 应用进行交互,以实现查看当前所有协程状态、窥视协程、进入指定协程、查看调用栈、打断点、单步调试、查看及修改变量调试、扫描僵尸协程、Kill 协程等操作,真正意义上的将 PHP 协程带到了工程化的实用阶段。WatchdogWatchdog 为 PHP 提供了 CPU 调度能力,其核心原理是 Watchdog 线程会定期检查其它线程中协程的活跃度情况,若发现工作线程中的协程不再活跃,则通过 ZendVM 的中断机制对其进行状态确认,若 VM 中断失败,则表明工作线程陷入了系统调用阻塞,触发告警;若 VM 中断成功,则表明工作线程陷入了 CPU 密集运算或死循环,则立即触发用户设定的调度规则进行调度。通过 Watchdog 可以实现 可编程的协程调度机制,可以非常方便的解决过往头疼的 CPU 饥饿 问题,以下是一些用法的演示:// 运行超过 1ms 就让出控制权\Swow\WatchDog::run(1 1000 1000);// 运行超过 1ms 就让出 10ms,调度失败并超过 5ms 时视为系统调用阻塞\Swow\WatchDog::run(1 1000 1000, 5 1000 1000, 10);// 可编程方式,函数会在程序阻塞 100ms 后触发$alertCountMap = new WeakMap();\Swow\WatchDog::run(quantum: 100 1000 1000, alerter: static function () use ($alertCountMap): void {$coroutine = Coroutine::getCurrent(); $alertCount = ($alertCountMap[$coroutine] ??= 0) + 1; $alertCountMap[$coroutine] = $alertCount; echo 'CPU starvation occurred, suspend this coroutine...' . PHP_EOL; sleep(0); if ($alertCount > 5) { echo 'Kill the bad guy' . PHP_EOL; $coroutine->kill(); }});更多用法关于 SDB 和 WatchDog 以及更多用法目前文档可能尚未完善,我们接下来也会编写多篇文章来阐述用法,也会尽快完善相关文档~BoxBox 是一个致力于帮助提升 PHP 应用程序的编程体验的工具,尤其有助于 Hyperf 应用,可以用于管理 PHP 环境和相关依赖,同时提供将 PHP 应用程序打包为二进制程序的能力,还提供反向代理服务来管理和部署 Swoole/Swow 服务。这些能力也是前所未有的,特别是将 Hyperf 或 PHP 应用打包为二进制程序的能力,打包好的程序,可以不依赖系统的 PHP 环境单独运行,以达到类似于 Go 语言的打包能力,这些能力也得益于 phpmicro 的发展,而 Box 则是站在巨人的肩膀上,将这些能力以更加简单易用的方式提供给大家使用~以下是一个通过下载 Box 到创建一个 Hyperf 应用,并运行的简单案例:安装 Box// Macwget https://github.com/hyperf/box/releases/download/v0.5.5/box_x86_64_macos -O boxsudo mv ./box /usr/local/bin/boxsudo chmod 755 /usr/local/bin/box// 确保 /usr/local/bin/box 在你的 $PATH 环境中,或者将 box 放到你想要的任意 $PATH 路径中// Linux x86_64wget https://github.com/hyperf/box/releases/download/v0.5.5/box_x86_64_linux -O boxsudo mv ./box /usr/local/bin/boxsudo chmod 755 /usr/local/bin/box// 确保 /usr/local/bin/box 在你的 $PATH 环境中,或者将 box 放到你想要的任意 $PATH 路径中// Windowscurl -o box.exe https://github.com/hyperf/box/releases/download/v0.5.5/box_x64_windows.exe// 将 box.exe 放到你想要的任意 Path 环境变量路径中,同时 Windows 版本在执行时需要在命令行中使用 box.exe 而不是 box初始化 Github Access TokenBox 需要一个 Github 访问令牌来请求 Github API,以便于从 GitHub Actions 的 Artifacts 中检索包的版本。创建 Github Access Token,workflow 范围需要勾选;运行 box config set github.access-token 命令来设置您的 token;我们将在 v0.6 版本让使用 Box 前无需设置 Github Access Token,以提供更加简便的使用体验,请期待~通过 Box 初始化 PHP 环境并启动 Hyperf// 通过 box 安装 PHP 8.1,此安装不会影响系统原来自身安装的 PHPbox get php@8.1// 通过 box 安装 composerbox get composer// 通过 box composer 创建 hyperf 应用,可指定 dev-master 分支以防止 packagist 代理数据落后的问题box composer create-project hyperf/swow-skeleton:dev-master// 通过 box 启动 hyperfbox hyperf start至此一个完整的安装和运行流程已完成,我们可以发现过往复杂的环境部署环节,已经简化为了区区几个命令,通过 && 连接符甚至可以组成一行命令足以。通过 Box 打包 Hyperf 应用为二进制程序这个神奇的能力,在操作上也被简化得匪夷所思,只需预先执行 box build-prepare 命令提前下载好相关依赖,这个命令只需执行一次即可,后续即可通过 box build 命令对当前所在文件夹的 Hyperf 应用进行打包动作。打包好后,当前文件夹会出现一个名为 hyperf 的二进制文件,后续只需要通过 hyperf start 命令即可启动该 Hyperf 应用。Box 自身就是一个基于 Box 打包出来的 Hyperf 应用,大家也可以通过了解 Box 项目本身,来了解该能力的使用。Box Kernel 切换默认情况下,Box 由 Swow Kernel 提供支持,但是我们也提供了 Swoole Kernel,您可以通过 box config set kernel swoole 来切换为 Swoole Kernel,但是需要注意的是,Swoole Kernel 仅支持 PHP 8.1 版本,且不支持构建二进制程序功能和 Windows 系统环境。// 设置为 Swow Kernel [默认]box config set kernel swow// 设置为 Swoole Kernel (不支持 Windows)box config set kernel swooleBox 的更多能力Box 还有更多有意思的使用方法和工具组合,可以通过下面的部分的命令清单快速一览命令box get pkg@version从远程安装包,pkg是包名,version是包的版本,box get pkg表示安装最新版本的 pkg,例如, 运行 box get php@8.1 安装 PHP 8.1, 运行 box get composer 安装最新的 composer binbox build-prepare 为 build 和 build-self 命令做好相关环境的准备box build-self 构建 box bin 本身box build 将 Hyperf 应用程序构建成二进制文件box self-update 将 box bin 更新至最新版本box config set-php-version 设置 box 的当前 PHP 版本,可用值:8.0 | 8.1box config get-php-version 获取 box 的当前设置的 PHP 版本box reverse-proxy -u <upsteamHost:upstreamPort> 启动一个反向代理 HTTP 服务器,用于将 HTTP 请求转发到指定的多个上游服务器box php 通过当前 box 的 PHP 版本运行任何 PHP 命令box composer 通过当前 box 的 PHP 版本运行任何 Composer 命令box php-cs-fixer 通过当前 box 的 PHP 版本运行任何 php-cs-fixer 命令box cs-fix 通过当前 box 的 PHP 版本运行 php-cs-fixer fix 命令box phpstan 通过当前 box 的 PHP 版本运行任何 phpstan 命令box pint 通过当前 box 的 PHP 版本运行任何 pint 命令更多优化Hyperf 3.0 仍做了大量的优化和调整,具体可以阅读 Hyperf 主仓库中的 CHANGELOG-3.0.md 文件。同时我们也为大家准备了一份从 2.2 升级至 3.0 的指南,具体可查阅 Hyperf 官方文档 - 3.0 升级指南 一章。相关链接Hyperf 的详细介绍:点击查看Hyperf 的下载地址:点击下载
2023年08月12日
15 阅读
0 评论
0 点赞
2023-08-11
用于检查和改进代码的PHP代码质量工具
用于检查和改进代码的PHP代码质量工具它们由您的同事开发人员Dave编写。这些类充满了格式错误,较差的缩进和奇怪的单字母变量。有很多依赖项需要向下滚动几分钟才能逃脱膨胀的构造函数。Shacking,你打开单元测试以了解它应该如何工作......但它们不存在。恐怖和不幸!你可以让Dave来到你的办公桌前,对他大喊大叫,你从未见过如此蹩脚的代码,诅咒他和他的家人。但是,既然你是一个尊敬的人,你知道这不是一个好的解决方案。教学而不是责备总能带来更好的结果。有了一个禅宗僧人的平静,你首先修复了在戴夫的帮助下驾驶你的老板疯狂的错误。然后,您决定向您的团队介绍一些代码质量工具。亲爱的读者,您已经拥有了良好的方法:代码质量工具对于编写可靠且无错误的PHP代码至关重要。它可以帮助您的同事检测代码库中的缺陷并向他们传授一些关键概念。但是,不要忘记它们提供的建议和数据并不适用于所有地方。您的经验和分析技能是您首先应该信任的。如果您已经对本文感到厌倦并且只想查看一个简单的PHP工具列表,则可以直接跳转到引用列表。在潜入之前的最后一件事:本文中介绍的工具分析或格式化您的代码,我不会谈论测试。安装代码质量工具安装此处描述的工具总是有多种方法。我个人的偏好是使用cgr来使用composer的全局包安装来避免全局范围的依赖性问题。在大多数情况下,您也可以使用PHAR格式。您可以参考每个工具的文档,以获得安装它们的所有可能方法。如何使用这些工具在你的终端所有工具都可以在终端中使用。大多数情况下,您只需将代码库的路径作为参数传递即可!我将为本文中的每个工具描述此过程。我建议你从项目的主文件夹中调用这些工具。每个示例都假设您的代码库位于该文件夹中src。在Vim / Neovim您可以在Vim中轻松配置所需的每个工具,并让它们解析打开的文件。使用插件neomake,您可以轻松地将PHPMD,PHPSTAN和PHPCS插入 Vim。它将显示在阴沟警告和错误中。非常便利!您甚至可以创建自己的制造商来使用您想要的每个PHP代码质量工具。作为参考,您可以参考我的neomake配置文件。在PHPStorm中由于我不再使用PhpStorm,我不会解释如何在IDE中安装这些工具。不过,这里有一些手册链接到Jetbrain的文档:PHPMDPHPCSPHP质量工具:必不可少的没有以下插件我不会写任何代码行。他们会正确格式化您的代码,并为您提供宝贵的建议。PHP-CS-Fixer(PHP编码标准修复程序)Github上文档让我们从长期会议,仇恨行为和谋杀冲动的原因开始:代码格式规则。帕金森琐碎定律的一个很好的例子。我个人对代码格式没有任何偏好。我关心的是拥有一致的:它更容易阅读它让你的思想更加重要PHP-CS-fixer是一个简单的工具,允许您自动格式化代码。默认情况下,使用PSR-1和PSR-2规则,但您可以定义自己的格式规则。使用以下命令,您可以格式化整个代码库:$ php-cs-fixer fix src/您也可以在不应用它们的情况下预览修改(--diff选项),或者您可以精确--rules选择要使用的规则(选项)。PHPCS(PHP CodeSniffer)Github上文档PHP CodeSniffer是一个非常好的工具,用于输出代码库中的编码标准违规。可以使用两个命令行脚本:phpcs输出实际的编码标准缺陷和phpcbf,它可以为您修复一些错误。您可以输入例如:$ phpcs src/输出看起来像这样:FILE: /home/superCoolUser/mySuperProject/src/Model/SuperModel.phpFOUND 6 ERRORS AND 1 WARNINGS AFFECTING 7 LINES2 | ERROR | [ ] Missing file doc comment 14 | ERROR | [ ] Missing @category tag in class comment 20 | ERROR | [ ] Missing doc comment for function __construct() 34 | WARNING | [ ] Line exceeds 85 characters; contains 93 characters 57 | ERROR | [x] Opening parenthesis of a multi-line function call must be the last content on the line 60 | ERROR | [ ] Expected "if (...) {\n"; found "if(...) {\n"63 | ERROR | [x] Closing parenthesis of a multi-line function call must be on a line by itselfPHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY正如您所看到的,phpcbf可以通过键入以下内容自动修复两个错误:$ phpcbf src/Model/SuperModel.php您可以使用PHP Code Sniffer附带的默认编码标准,也可以轻松实现自己的编码标准。PHPMD(PHP Mess Detector)官方网站文档PHPMD将在您的应用程序中显示该语言可能存在的错误和误用。这里怎么做的魔术:$ phpmd src/ text cleancodePHPMD将扫描项目的目录和子目录,并以纯文本形式输出发现的错误。您也可以通过替换上面命令行中的选项来创建html或xml输出text。在此示例中,我们使用cleancode规则集,但您显然可以更改它或创建自己的规则集。您想要在文件中输出错误吗?简单:$ phpmd src/ html cleancode --reportfile ~/phpmd.html如果选择xml输出,您将获得有关规则集的更多信息,如下所示:<violation beginline="61" endline="61" rule="BooleanArgumentFlag" ruleset="Clean Code Rules" externalInfoUrl="http://phpmd.org/rules/cleancode.html#booleanargumentflag" priority="1"> The method notThatCoolMethod has a boolean flag argument $badBoolean, which is a certain sign of a Single Responsibility Principle violation. </violation> <violation beginline="102" endline="104" rule="ElseExpression" ruleset="Clean Code Rules" externalInfoUrl="http://phpmd.org/rules/cleancode.html#elseexpression" priority="1"> The method superMethod uses an else expression. Else is never necessary and you can simplify the code to work without else. </violation>您可以看到例如违反规则的优先级。然后,您可以使用--minimumpriority选项优化结果。简而言之:PHPMD是一个很棒的工具,我真的很乐意使用它。它将检测代码中的许多潜在问题,并为您节省数小时的调试时间。你的老板会很高兴他会把你的工资提高200%。保证。PHPStan(PHP静态分析工具)Github上PHPStan是您工具箱中的另一个工具。它的目标是?编译时会显示编译语言等输出错误。它是PHPMD的一个很好的补充。您可以按以下方式运行它:$ phpstan analyse src/ --level=7您可以使用级别选项精确地确定PHPStan的严格性。最小值是level 0最大值level 7。这里给出一个输出示例:------ ----------------------------------------------------------------------- Line src/MySuperModels/RandomModel ------ ----------------------------------------------------------------------- 78 Instantiated class App\Service\Api\InvalidArgumentException not found. 82 Instantiated class App\Service\Api\InvalidArgumentException not found. 93 Method App\Service\Api\Client\ClientInterface::post() invoked with 3 parameters, 4 required. 103 Casting to string something that's already string. ------ -----------------------------------------------------------------------与其他工具一样,您可以创建自己的规则。PHPUnit和CRAP指标Github上文档本文不涉及单元测试。我假设您知道测试代码的单元远比本文中的任何内容更重要。PHPUnit也可以显示一个非常有趣的信息:CRAP指标。CRAP使用圈复杂度和代码的代码覆盖率来显示应用程序中难以更改的代码。更多CRAP索引很高,你的代码将被视为“糟糕”。实际上,如果您的代码具有很高的复杂性但代码覆盖率很低,那么每次更改它时都会导致它出现不幸的错误。直到你的老板对你大喊大叫,你才会注意到。期待你的同事开发人员戴夫试图让你更加努力,让他在你的耻辱阴影中闪耀。要显示CRAP指标,您需要生成代码覆盖率报告:$ phpunit phpunit --coverage-html ./tempFolder这将在tempFolder目录中创建HTML文件。您可以index.html在那里打开并单击仪表板链接以最终考虑CRAP指标。垃圾量度前往CRAP中心的旅程但请记住:代码覆盖率并不意味着您的代码经过了充分测试。这是我将为另一篇文章保留的完全不同的主题。更深入地检查您的PHP代码我使用以下工具来确保我工作的项目朝着正确的方向发展。他们可以帮助您了解全局。当您需要处理未知(遗留)应用程序时,它们也可以成为真正的生命救星。它们可以为重构提供很大帮助。PhpLocGithub上PhpLoc是一个非常好的工具,可以了解项目的大小。您可以在您的代码库上执行:$ phploc src这将输出类似的东西:Size Lines of Code (LOC) 61 Comment Lines of Code (CLOC) 0 (0.00%) Non-Comment Lines of Code (NCLOC) 61 (100.00%) Logical Lines of Code (LLOC) 23 (37.70%)Classes 17 (73.91%) Average Class Length 17 Minimum Class Length 17 Maximum Class Length 17 Average Method Length 3 Minimum Method Length 1 Maximum Method Length 7 Functions 0 (0.00%) Average Function Length 0 Not in classes or functions 6 (26.09%) Cyclomatic Complexity Average Complexity per LLOC 0.26 Average Complexity per Class 7.00Minimum Class Complexity 7.00 Maximum Class Complexity 7.00Average Complexity per Method 2.20Minimum Method Complexity 1.00 Maximum Method Complexity 4.00 Dependencies Global Accesses 0Global Constants 0 (0.00%) Global Variables 0 (0.00%) Super-Global Variables 0 (0.00%)Attribute Accesses 7Non-Static 7 (100.00%) Static 0 (0.00%)Method Calls 14Non-Static 14 (100.00%) Static 0 (0.00%) Structure Namespaces 1 Interfaces 0 Traits 0 Classes 1Abstract Classes 0 (0.00%) Concrete Classes 1 (100.00%)Methods 5Scope Non-Static Methods 5 (100.00%) Static Methods 0 (0.00%) Visibility Public Methods 3 (60.00%) Non-Public Methods 2 (40.00%)Functions 0Named Functions 0 (0.00%) Anonymous Functions 0 (0.00%)Constants 1Global Constants 0 (0.00%) Class Constants 1 (100.00%) 这些数据可以为您提供有关该项目的一些线索:Comment lines of code永远不会好。不加思索地摆脱它。太高Average Class length通常也不好。拆分神班。太高Average Method length也不好。为了解雇你的同事,分开他们。Cyclomatic complexity可以指出一切和任何东西。信任CRAP之类的东西可能更明智。避免不必要Dependencies。简而言之:一个非常简单而有价值的工具。PHPCPD(PHP复制过去检测器)Github上PHPCPD将扫描您的代码库并输出重复的代码。您可以输入以下命令来使用它:$ phpcpd src/PHPCPD将产生这种输出:phpcpd 4.0.0 by Sebastian Bergmann.Found 1 clones with 44 duplicated lines in 2 files:/home/superUser/src/superFile.php:11-55/home/superUser/src/superFolder/superFile.php:11-555.04% duplicated lines out of 873 total lines of code.Time: 29 ms, Memory: 4.00MB您可以包含多个文件而不是整个目录,排除某些文件(或路径),甚至可以将结果输出到XML文件中。但请记住:如果您在代码库中使用DRY原则违规,请记住,代码重复并不一定意味着DRY违规。PHPMND(PHP魔数检测器)Github上文档这个工具非常具体:它可以帮助您在代码中找到魔术数字。最简单的使用方法:$ phpmnd src/这里输出:httpClient/myHttpClient.php:98. Magic number: 20098| if ($response->getStatusCode() != 200) {service/superClass.php:47. Magic number: 847| for ($i = 0; $i < 8; $i++) {你可以玩很多选项,比如可以忽略数字,排除文件/路径/扩展......dePHPendGithub上文档你有没有在一个充满不必要的依赖项目上工作,想知道如何理解这个噩梦?你想验证你的精彩项目是否没有变成一个复杂的泥球大球吗?dePHPend可以帮助您在这件事上隆重。您可以按如下方式使用它:$ dephpend metrics src/然后这个输出将神奇地出现:示例减去输出如您所见,dePHPend将输出传入耦合的数量,传出耦合的数量并显示基于它们的不稳定性指标。明确:没有班级依赖于班级 App\Kernel该课程App\Kernel取决于其他五个班级这里的不稳定性评分很高:这个班级将其他课程结合在一起但从未使用过!您也可以输出纯文本或UML。流失的PHPGithub上churn-php将根据圈复杂度和类的提交次数显示你应该重构的类。这是一个非常有趣的方法。经常被修改的非常复杂的类确实很有可能引入错误。作为其他工具,使用起来非常简单:$ churn run src/结果如下FileTimes ChangedComplexityScoresrc/Service/classToRefactor.php1280.441src/Service/anotherClass.php3150.185分数越高,重构的需求就越大。PhpCodeFixerGithub上文档不推荐的功能很糟糕。他们可以创建非常奇怪的错误,难以调试。此工具可以帮助您在闪亮的应用程序中检测它们。您可以精确地使用PHP的版本和主代码库目录,如下所示:$ phpcf --target 7.1 src这里通常可能的输出:phpcf输出PhpMetricsGithub上文档最后但同样重要的是:如果您是度量标准爱好者,PhpMetrics将是您的日常修复。它将输出大量有关您项目的指标。你需要输入类似的东西:$ phpmetrics --report-html=myreport.html src/HTML输出将充满图表和数字。现在请记住,指标不一定是绝对真理,它实际上取决于您的项目。我不会解释这个工具可以在这里输出的所有内容,也许在将来的文章中?我们真的需要这些工具来检查我们的PHP代码吗?我的经验告诉我,软件熵是真实的。您将修改更多应用程序,应用程序有更多机会破解。您的申请将不可避免地变得更加复杂。这些PHP代码质量工具绝对可以帮助您解决这个问题。由于您的代码库将越来越多,因此重构是必需的,这些工具可以向您展示从哪里开始。每天,他们可以为您提供所需的所有这些小事,以保持您的代码库健康。请记住:它们是一个很好的补充,但不是一个可靠的测试套件的替代品,从良好的单元测试开始。你使用的工具不是这里描述的工具吗?你用不同的方式吗?不要犹豫,通过分享您的经验来帮助社区。快速参考PHP-CS-定影液文档Github上PHPCS文档Github上PHPMDDocumenation官方网站PHPStanGithub上PHPUnit的文档Github上PHPLocGithub上PHPCPDGithub上PHPMND文档Github上流失的PHPGithub上dePHPend官方网站Github上PhpCodeFixer文档Github上PhpMetrics官方网站Github上via https://thevaluable.dev/code-quality-check-tools-php/
2023年08月11日
11 阅读
0 评论
0 点赞
2023-08-09
PHP开发必备工具
PHP开发必备工具在本文中,将介绍在目前软件工程中经常用到的持续集成概念,并且会介绍在PHP开发中,如何能用好PHP目前开源的一些持续集成管理工具,去管理好项目。持续集成的概念持续集成的概念是在现代软件工程中提出的,最早见于敏捷开发方法论中,大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。下面介绍PHP中的持续集成工具:PHPUNIT首先,PHPUNIT是PHP中的单元测试利器,项目地址在:http://www.phpunit.it。它能自动运行你编写的单元测试代码,并给出是否通过的结果。安装步骤如下,可以使用PHP中的PEAR安装:sudo apt-get install php5-curl php-pear php5-devsudo pear upgrade pearsudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear channel-discover pear.symfony-project.comsudo pear install phpunit/PHPUnit之后,就可以在命令行下,以如下格式执行phpunit:Phpunit 单元测试的php文件名.php此外,还可以执行如下命令,生成单元测试的覆盖报告:phpunit --coverage-html ../CodeCoverage这将在指定的目录中生成单元测试的覆盖报告,比如这个例子中,将在目录CodeCoverage中生成单元测试覆盖报告,如下图:PHP开发必备 PHP持续集成工具介绍(上)▲点击看大图如果点上图的每一个PHP文件,还可以具体看到每个文件的单元测试覆盖情况,如下图:PHP开发必备 PHP持续集成工具介绍(上)▲点击看大图从上图中,可以看到每个PHP文件中,调用的方法的单元测试覆盖情况,还可以看到具体哪些代码行是已经单元测试覆盖过,哪些没有覆盖过(绿色表示已经覆盖,橙色表示还没覆盖),如下图:PHP开发必备 PHP持续集成工具介绍(上)▲点击看大图PHP CodeSnifferPHP CodeSniffer是一个PHP的代码风格检测器,它根据预先设定好的PHP编码风格和规则,去检查应用中的代码风格情况,内置了ZEND,PEAR的编码风格规则,当然开发者也可以进行自定义。项目的地址在:http://pear.php.net/package/PHP_CodeSniffer/redirected,安装方法如下:sudo pear install PHP_CodeSnifferphpcs --standard=Zend c:\phpcode其中phpcs –standard后指定了使用Zend的建议代码风格标准进行检查,最后一个参数是要检查的PHP文件所在的目录。运行后,检查的一个效果图如下图所示:PHP CodeSniffer▲点击查看大图PHP DependPHP Depend(http://pdepend.org/)是一个PHP中静态代码分析的工具。它可以用来检查你的PHP项目中的代码规模和复杂程度。安装方法如下:sudo pear channel-discover pear.pdepend.orgsudo pear install pdepend/PHP_Depend-beta使用的一个例子如下:pdepend --jdepend-xml=../jdepend.xml --jdepend-chart=../dependencies.svg --overview-pyramid=../overview-pyramid.svg上面会生成一个XML文件,两个SVG的图形文件。其中XML文件说明了项目中各PHP文件的互相依赖调用(引用)情况及每个方法、函数,类的代码行,一个例子如下:<?xml version=”1.0” encoding=”UTF-8”?>其中的noc含义是类的代码的行书,nof为函数的代码行数,noi为接口代码行数,nom为方法method代码行数。接下来我们来看下产生的一张SVG图,该图如下所示:PHP CodeSniffer这张图的反映了项目中包的依赖性度量情况。其基本理论来源于Robert C. Martin的论文(http://www.objectmentor.com/resources/articles/oodmetrc.pdf)中所介绍的关于软件中模块依赖性和稳定性的度量。其中,提到了如下概念:Afferent Couplings (Ca)依赖于被分析package的其他package的数量,用于衡量pacakge的职责。简单来说,即有多少其他的包或模块调用了被分析的包或模块。Efferent Couplings (Ce)被分析package的类所依赖的其他package的数量,用于衡量package的独立性。即它调用了多少其他包。Abstractness (A)被分析package中的抽象类和接口与所在package所有类数量的比例,取值范围为0-1。如果该值为0,证明包中没任何抽象类,有的只是具体实现逻辑方法的类,如果该值为1,则包中只有抽象类或接口了Instability (I)I=Ce/(Ce+Ca),用于衡量package的不稳定性,取值范围为0到1。I=0表示最稳定,I=1表示最不稳定。Distance (D)用于衡量package在稳定性和抽象性之间的平衡。可以看到,最理想的情况是A+I越趋近1的,这样能获得抽象性和稳定性的最佳平衡。此外,介绍php depend中生成的另外一张图的含义,图片如下:PHP CodeSniffer在这张图中,最上面的ANDC表示继承其他类的平均数目,即项目中有多少类是继承其他的类;AHH是继承其他类的层次数。CALLS是方法被调用的总的次数,FANOUT是类所引用的类型数目。而CYCLO是圈复杂度(关于圈复杂度的解析,请参考(http://en.wikipedia.org/wiki/Cyclomatic_complexity)。LOC是代码行数,NOM是项目中的方法的数目,NOC为项目中类的数目,NOP为项目中包的数目。根据上图中标明的除法规则,可以计算出相关的数据。更多的请参考php depend手册(http://pdepend.org/documentation/handbook/reports/overview-pyramid.html)的详细解析。在上一篇文章中,我们为大家介绍了一些PHP持续集成工具,在本文中,我们将介绍继续介绍PHP中的持续集成工具。持续集成的概念持续集成的概念是在现代软件工程中提出的,最早见于敏捷开发方法论中,大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。PHP MESS DECTORPHP MESS DECTOR(简称PMD,项目地址http://phpmd.org/),是基于pdepend的结果进行分析,分析出一旦你的PHP项目超过了pdepend中各具体指标值的规定,从而发出警告提示信息,安装方法如下:sudo pear channel-discover pear.phpmd.orgsudo pear channel-discover pear.pdepend.orgsudo pear install --alldeps phpmd/PHP_PMD使用方法为:phpmd . html codesize,unusedcode,naming,design --reportfile ../messdetector.html --exclude Tests/上面这个命令含义为,使用pdepend中的4个规则codesize,unusedcode,naming,desgin去检查项目的代码,但除了Tests目录不作检查,检查结果生成HTML的格式,保存在/messdetector.html中,结果如下:PHP开发必备 PHP持续集成工具介绍(下)▲点击查看大图PHP COPY PASTE DETECTORPhp copy paste detector(https://github.com/sebastianbergmann/phpcpd)是重构的一个好工具,它用来发现你的项目中的重复代码。安装方法如下:sudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear install phpunit/phpcpd注意,必须先安装phpunit。运行方法如下图:PHP开发必备 PHP持续集成工具介绍(下)PHP DEAD CODE Detectorphp dead code detector(https://github.com/sebastianbergmann/phpdcd)是一个检查你的项目中有哪些代码是从来没被调用过的,比如类,方法编写后再没被调用过,这是一个去掉“坏味道”代码的最佳实践,可以增强系统的可维护性。安装如下:sudo pear channel-discover pear.phpunit.desudo pear channel-discover components.ez.nosudo pear install phpunit/phpdcd-beta运行方法下图:PHP开发必备 PHP持续集成工具介绍(下)综合持续集成工具 Jenkins有了上面的各类工具,用户可以在PHP中进行持续集成构建的工作,但还可以使用一款综合的持续集成工具Jenkins(http://jenkins-ci.org/)进行(注:Jenkins其实就是原先的构建工具Hudson,只不过现在改了名称)。这款持续集成工具是个持续构建服务器,包含了上述提到的各种PHP持续构建工具的功能,安装好后,能做到每天持续构建,并将构建的结果通知用户。下面对其进行简单介绍。Jenkins可以使用windows下的计划任务,LINUX下的SHELL以及ANT或者MAVN去进行构建项目,本文以使用ANT为例进行说明,首先必须安装JAVA中的ANT。编写ANT文件如下:<property name="output" location="${basedir}/buildOutput/"/> <target name="init"> <mkdir dir="${output}"/> <mkdir dir="${output}/phpcs/"/> <mkdir dir="${output}/pdepend/"/> </target> <target name="build" depends="init, test, phpcs, phpmd, phpcpd, pdepend"> </target> <target name="test"> <exec executable="phpunit" failonerror="true"> <arg line="--coverage-clover ${output}/CodeCoverage/clover.xml --coverage-html ${output}/CodeCoverage/ ."/> </exec> </target> <target name="phpcs"> <exec executable="phpcs"> <arg line="--report=checkstyle --report-file=${output}/phpcs/checkstyle.xml --standard=Zend ${basedir}" /> </exec> </target> <target name="phpmd"> <exec executable="phpmd"> <arg line=" . xml codesize,unusedcode,naming,design --reportfile ${output}/messdetector.xml --exclude Tests/ " /> </exec> </target> <target name="phpcpd"> <exec executable="phpcpd"> <arg line=" --log-pmd ${output}/phpcpd.xml . " /> </exec> </target> <target name="pdepend"> <exec executable="pdepend"> <arg line=" --jdepend-xml=${output}/pdepend/jdepend.xml --jdepend-chart=${output}/pdepend/dependencies.svg --overview-pyramid=${output}/pdepend/overview-pyramid.svg --ignore=Tests/ . " /> </exec> </target>熟悉ANT的读者应该知道,这里其实是调用了以上说的各个PHP持续集成工具而已。接下来,是安装Jenkins,到Jenkins的官网去下载相符合的操作系统版本,然后就可以按照指引安装,本文以在Ubantu上的安装方法为例说明:wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add –在/etc/apt/sources.list文件最后增加如下这行:deb http://pkg.jenkins-ci.org/debian binary/sudo apt-get updatesudo apt-get install jenkins之后就可以安装成功了,可以通过http://localhost:8080/ 去访问Jenkins了,初始界面如下图:PHP开发必备 PHP持续集成工具介绍(下)Jenkins的设置Jenkins的设置比较复杂,在这里不一一详细论述。但这里稍微提下设置的基本方法。只需要点上图中的“Manage Jenkins”链接,再点“Configure System”则可进入设置面板,其中你可以设置相关的权限设置,也可以设置SMTP用来通知每次的构建成功与否的信息。此外,需要设置Jenkins中的插件设置,要打开相关的插件设置开关,比如使用Git做版本控制工具的,则要设置Git插件为允许状态。设置的步骤很简单,选择“plugin”,点“Install”即可安装,安装后要重新启动Jenkins。我们需要安装一系列的插件去实现php的持续集成,比如安装Clover(https://wiki.jenkins-ci.org/display/JENKINS/Clover+Plugin)去图形化显示phpunit的单元测试覆盖率,安装Checkstyle(https://wiki.jenkins-ci.org/display/JENKINS/Checkstyle+Plugin)去显示PHP CodeSniffer的运行结果,也要安装PMD,而Jdepend(https://wiki.jenkins-ci.org/display/JENKINS/JDepend+Plugin)用来显示PHP Depend的结果。在完成基本设置后,我们可以首先新建立一个Job,点“New Job”链接,给Job命名,之后,我们可以按照http://jenkins-php.org/一文中的教程进行设置,之后就可以运行构建了,下面是两个典型的构建运行图:PHP开发必备 PHP持续集成工具介绍(下)PHP开发必备 PHP持续集成工具介绍(下)可以看到,Jenkins的每次构建,都能综合运用了本文所谈到的各样php集成工具,十分方便,而且能提供十分丰富的图形报表。总结持续集成应该成为你日常项目管理运行维护的重要步骤,通过每天构建项目,能达到敏捷软件工程学中的最佳实践,提高系统的可靠性,减少系统潜在的bug,由于篇幅所限,更多的持续集成工具用法在以后的文章中将会详细论述,读者可参考各工具的参考手册进行学习。
2023年08月09日
26 阅读
0 评论
0 点赞
2023-08-09
15个 PHP 开发工具
PHP是一种服务器端的脚本语言,通常用于WEB开发,但也可以用于其他普通的功能。它是最常用的语言之一,目前大约有240万个网站是用PHP语言实现的。网络上有很多免费的PHP开发工具,这些工具对于PHP程序员来说是非常好用的,并且有很大的帮助作用。有很多基本的功能,也有许多高级工具,但是想找到适合你的却不是一件容易的事。互联网上有太多的资源,以至于很难找到适合的。如果你是一名Web开发人员,并在寻找一些新鲜的PHP开发工具,那么你就找对地方了。这篇文章中,我们将为你提供一份互联网上免费的最好用的PHP开发工具列表。这份列表中包含对初学者十分有用的工具,同样也包含专业PHP程序员开发特定功能所需的高端工具。1) PHP CPPphp-tools-php-cppPHP-CPP库是一个用于开发PHP扩展的C++库。它提供了一个可以用了创建PHP扩展的、文档健全、简单易用的类的集合。2) SUBLIMETEXTphp-tools-sublimetextSublimeText是程序员中最流行的编辑器之一。你一定会喜欢它漂亮的界面、强大的功能以及非凡的性能。3) PLATES PHPphp-tools-phpplates1Plates 是一个快速、简单易用、易扩展的本地PHP模版系统。Plates是为喜欢本地PHP模版,而非编译后的模版(如Twig,Smarty)的程序员准备的。4) HOAphp-tools-hoaHoa 是另一个非常流行的PHP库。5) SlimStarterphp-tools-xsenistySlimStarter为中小型Web应用提供了完美解决方案,提供HMVC环境,只有4M左右的大小。建立在完善的Slim框架之上,数据库层面提供Eloquent ORM,表现层使用Twig模版引擎。6) PARSEDOWNphp-tools-parsedownPHP中非常棒的Markdown解析工具。7) PRETTIFIERphp-tools-prettifierPrettifier 为常用的编程语言,如JSON、CSS、HTML、XML、SQL、PHP、Perl、Apache Config、JavaScript等提供了代码格式化和语法高亮等功能。8) FORPphp-tools-forpforp是提供PHP配置文件数据的轻量级PHP扩展。功能:每个函数分配时间和内存的测量CPU使用率函数调用的文件及行号谷歌跟踪事件格式函数说明函数分组函数别名9) GEOCODERphp-tools-geocoderGeocoder库通过提供了一个强大的抽象层来操作地理编码,可以帮你创建地理感知应用程序。10) TWIGphp-tools-twigTwig是一个快速、安全、灵活、现代化的PHP模版引擎。允许开发人员自定义标签和过滤器,并创建自己的DSL。11) REQUESTS FOR PHPphp-tools-requestsforphpRequests 是一个用PHP实现的HTTP库,它基于优秀的Requests Python库API实现。12) GUZZLE PHPphp-tools-guzzlephpGuzzle 是一个PHP的HTTP客户端,可以轻易地发送HTTP请求及实现WEB服务集成。13) BELTphp-tools-beltBelt 是PHP程序员非常顺手的工具。14) FAKERphp-tools-fakerFaker是一个为你生成假数据的PHP库。无论你是想启动数据库、创建漂亮的XML文件、进行压力测试等,Faker都可以满足你。15) MINKphp-tools-minkWEB中最重要的一部分就是浏览器。浏览器是互联网用户与Web应用程序及其他用户交互的窗口。用户总是通过浏览器来与应用程序交互。
2023年08月09日
9 阅读
0 评论
0 点赞
2023-08-09
15 个最佳 PHP 库
15 个最佳 PHP 库PHP是一种功能强大的web站点脚本语言,通过PHP,web网站开发者可以更容易地创建动态的引人入胜的web页面。开发人员可以使用PHP代码与一些网站模板和框架来提升功能和特性。然而,编写PHP代码是一个繁琐又耗时的过程。为了缩短开发时间,开发人员可以用PHP库替代编写代码来为站点添加功能。使用PHP库来取代编写代码,可以显着地降低网站的开发时间,从而开发人员可以将时间投入到网站设计等重要环节。今天我们要介绍的就是15个最佳的PHP库,它们将帮助网站开发人员轻松提高网站的功能,优化PHP的开发时间。PChartPChart是一个令人印象深刻的PHP库,可以以一种可视化图表的形式生成文本数据。数据可以展示为柱状图,饼状图,以及其他格式。使用SQL查询可以帮助PHP脚本创建令人惊叹的图表和图形。PHP CAPTCHAPHP CAPTCHA是另一个伟大的用于创建自动化音频和可视化CAPTCHA的PHP库。CAPTCHA系统是完全自动的使用图灵测试来完成区分人和机器人的挑战。 PHP库需要PHP 4以及编译的FreeType文本和GD 1或2图像生成的支持。3.DispatchDispatch是一个简单的PHP库,可以定义URL规则以更好地组织网站。使用这个PHP库你可以匹配HTTP路径和要求,显示器等的特定类型。结合Dispatch和本文中列出的其他库,开发人员就能有一个强大而简单的工作设置。Services_JSONServices_JSON允许人脑可读数据的传输。 PHP库的最新版本为服务器传输数据提供了极大的便捷。phpAESphpAES是支持128,192和256位AES加密密码的一类实现PHP代码。当涉及到汇编成PHP的时候,你不需要其他的扩展。phpAES是全功能的,并且符合FIPS 197。ImageWorkshopImageWorkshop是一个伟大的开源PHP库,允许你层次化地控制操作图像。使用PHP库,你可以裁剪、调整大小、添加水印、制作缩略图等以不同的方式处理图像。 PHP库还可以更容易地进一步加强在web网站上所使用的图像。6.MinkMink是另一个有用的PHP库,可以帮助你用互联网浏览器测试web页面的交互。该库删除了不同浏览器之间的API的差异,从而给开发人员提供更好的测试环境。PHP ThumbnailerPHP Thumbnailer是一个简单的图像处理PHP库,能够帮助生成缩略图。此库不需要再安装外部库。PHP Thumbnailer提供了对缩略图的多种控制,如根据高度、宽度、百分比调整缩略图大小,旋转图像,以及创建自定义的小图形,如正方形。8.HoaHoa是结构化,模块化,可扩展的PHP库,可创建研究和工业领域之间的链接。 此PHP库建议必不可少的范式、机制、算法,以确保web站点的可靠性。PHP Text to ImagePHP Text to Image是一个可以将文本转换成图像的PHP库。在某些简单的情况下,如显示email地址作为不能以编程方式发现的图像的时候,这是很有用的。使用这个PHP库可以通过网络爬虫以及将它当作垃圾邮件来减少电子邮件地址泛滥。10.FakerFaker是一个非常有用的PHP库,可以在需要时创建假数据。使用这个PHP库,你可以执行各种诸如匿名数据,引导数据库,创建XML文档,进行压力测试的任务。11.PHP Image Upload ClassPHP Image Upload Class是一个功能强大的PHP库,可以简化上传图像到窗体表格的过程。通过这个库,开发人员可以使用文件输入命令上传图片。开发人员也可以在类之外定义用户消息,通过gettext或类似的命令,在本地提供帮助。12.Ratchet使用Ratchet PHP库,web开发人员可以创建实时性以及在客户端和服务器之间双向性的应用程序。 这个PHP库能够帮助促进和创造事件驱动应用程序,而不是使用传统的HTTP请求。PHP Export XLS ClassPHP Export XLS Class是一个轻量级的,快速又简单的PHP库,可以导出不同类型的数据到Excel中。它可以转换各种数据格式到.xls格式。此库还可工作于多个工作表,元数据(标题,作者,描述,等),不同的字体类型和风格,填充,单元格边框和渐变。开发人员也可以使用PHP扩展来添加图像到工作表中。phpDocumentorphpDocumentor是一个很不错的自动文档工具,可以帮助我们创建一个使用PHP代码的专业文档。 该PHP库支持添加多种不同的功能到网站。一些由PHP库支持的增值功能,包括支持合并自定义文档——例如教程,链接文档,创建高亮源代码,功能交叉引用到PHP常规文档。 此PHP库可以帮助自动化文档。PHP DB ClassPHP DB Class是一个伟大的PHP库,可以帮助开发PHP和MySQL。该工具可轻松方便地访问一个数据库,并减少执行任务所需的代码数量。此外,此PHP库提供各种调试功能。例如,开发人员可以使用调试功能来显示请求和结果表,还可以通过添加参数到它的类的方法来执行此任务。
2023年08月09日
12 阅读
0 评论
0 点赞
1
2