| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 学习PHP中YAML操作扩展的使用 -> 正文阅读 |
|
[PHP知识库]学习PHP中YAML操作扩展的使用 |
学习PHP中YAML操作扩展的使用YAML 这个东西,说实话,自己用得并不多。在学习自动化测试相关的内容时候,接触过使用这种配置文件来配置 Travis CI 的持续集成操作,当然,当时也是以学习性质为主的。虽说接触得不多,但也知道确实这种配置格式的写法基本上已经成为了现在的主流。所以关于具体的 YAML 相关的内容在这里就不多做解释了,还不是太了解的同学可以自行查阅一些相关的文档。 我们今天来学习的主要是一个 PHP 中用来解析和转换 YAML 格式的扩展,安装过程并没有什么特别的可以说明的地方,就和其它的扩展一样进行安装即可。不过这个扩展需要一个 libyaml-devel ,在 CentOS 中直接通过 yum 或者 dnf 是无法安装的,我们可以在文末的链接中找到下载地址。 将 PHP 数据转换成 YAML对于将 PHP 的数据转换成 YAML 来说,其实就和 JSON 相关的操作差不多,将数组转换成 YAML 格式的字符串。
可以看到 yaml_emit() 函数转换的结果是非常标准的 YAML 格式。开头有 --- ,结尾有 ... 。但你会发现有很多教程或者框架中的 .yml 文件中是没有这些符号的,从官方文档中得知这些符号是建议写得,而我们的扩展则是非常地遵守建议,也就是转换的结果非常地标准。 此外,在测试代码中我们加入了中文的内容。可以看到直接转换的时候中文被编码了。就像 JSON 操作一样,在 YAML 这个扩展的函数中,我们也可以指定编码格式让中文原样显示。
将 YAML 转为 PHP 数组没错,也是类似于 JSON 操作的,将 YAML 格式的字符串格式内容反转回 PHP 数据内容。
同样非常简单地一个 yaml_parse() 函数。除了直接操作字符串之外,我们还可以直接提取文件内容来进行转换,包括上面的 yaml_emit() 函数也是有类似的直接将结果写入到文件中的。
我们测试的这个文件就是 Laravel 中自带的那个 .styleci.yml 文件。在 Laravel 框架中并没有要求我们安装这个 YAML 扩展,似乎在框架中本身就有解决读取转换这种 YAML 格式的工具,这个我们最后再说。和 yaml_parse_file() 类似地,yaml_emit_file() 是直接将 PHP 数据转换为 YAML 格式之后直接写入到一个文件中,大家可以自己测试一下。 回调函数处理标签不管是 yaml_emit() 还是 yaml_parse() 都是支持一个回调参数操作的。我们先来看看例子。
这是什么意思呢?!laravel 这种写法可以看做是 YAML 中的一种标签格式的写法。而这个回调的作用就是在遇到类似的这类标签的时候,使用什么回调函数来进行处理。比如我们的原文档中的 !laravel 后面的内容是 laravel 。在回调函数中我们将内容替换成了 new version laravel8 ,于是,最后输出的结果就是 preset 字段的内容变成了 new version laravel8 。当然,更加详细的内容以及更多地语法还是需要我们深入地了解 YAML 格式的语法才能够更加清楚,所以这里也就不多说了,毕竟自己也接触得不多。 总结对于这个扩展的内容不多,而且即使是真实的业务环境中需要操作 YAML 格式的配置文件的话估计我也不会用它。为什么呢?当然是因为 Composer 里面已经有很多处理 YAML 的组件可以供我们使用啦。完全不需要通过扩展编译安装的方式来对服务器上的 PHP 环境进行改变。如果是自己使用的话,在 packagist.org 中能找到很多组件,而如果是使用 Laravel 的话,它的底层使用的其实是 symfony 框架中 yaml 处理组件。直接使用 composer require symfony/yaml 就可以为自己的小项目添加这个组件咯。具体内容可以参考这个文档: https://symfony.com/doc/current/components/yaml.html 测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/2021/01/source/10.学习PHP中YAML操作扩展的使用.php 参考文档: https://www.php.net/manual/zh/book.yaml.php http://www.rpmfind.net/linux/rpm2html/search.php?query=libyaml-devel(x86-64) http://bd808.com/pecl-file_formats-yaml/ |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 18:26:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |