广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >什么是TOML?PHP中怎么配置使用TOML
  • 885
分享到

什么是TOML?PHP中怎么配置使用TOML

2024-04-02 19:04:59 885人浏览 安东尼
摘要

本篇文章带大家聊聊PHP中的TOML配置,介绍一下在 php 中如何使用 TOML 配置文件格式语言,希望对大家有所帮助!php零基础到就业直播视频课:进入学习全程直播 + 实战授课 + 边学 + 边练 + 边辅导【推荐】《接口如何自动化测

本篇文章带大家聊聊PHP中的TOML配置,介绍一下在 php 中如何使用 TOML 配置文件格式语言,希望对大家有所帮助!

php零基础到就业直播视频课:进入学习
全程直播 + 实战授课 + 边学 + 边练 + 边辅导
【推荐】《接口如何自动化测试?单流测试、组合测试、智能测试报表!》

TOML 是一个配置格式化语言,特色是简洁易读。 全称为 "Tom's Obvious, Minimal Language" 其中的 Tom 为创建者 —— Tom Preston-Werner (译者注:GitHub CEO)。

来自其 github Reopo,TOML 的目的如下:

TOML 是一门简洁易用的配置信息格式化语言,高可读性来自于其优雅的语法。 TOML 为哈希表数据结构量身定制的,在各种编程语言里皆可以轻松地将 TOML 解析为各自的数据结构。

TOML 和 PHP 在一起

各种语言的 TOML 解析器可以 在其项目 WIKI 中找到。

我们将利用 yosymfony/toml: 一个 PHP 的 TOML 解析器 来尝试下 TOML 语言,在你的 PHP 7.1+ 项目里使用 Composer:

composer require yosymfony/toml

TOML 的项目 Readme 里有一个示例配置信息,我们可以试着用起来:

## This is a TOML document.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # Indentation (tabs and/or spaces) is allowed but not required
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]

下面是 PHP 的解析和输出:

<?php

use Yosymfony\Toml\Toml;

require __DIR__ . '/vendor/autoload.php';

$data = Toml::ParseFile(__DIR__.'/example.toml');

var_dump($data);

// output
php index.php
string(10) "1979-05-27"
toml-demo|⇒ php index.php
array(5) {
  ["title"]=>
  string(12) "TOML Example"
  ["owner"]=>
  array(2) {
    ["name"]=>
    string(18) "Tom Preston-Werner"
    ["dob"]=>
    object(DateTime)#243 (3) {
      ["date"]=>
      string(26) "1979-05-27 07:32:00.000000"
      ["timezone_type"]=>
      int(1)
      ["timezone"]=>
      string(6) "-08:00"
    }
  }
  ["database"]=>
  array(4) {
    ["server"]=>
    string(11) "192.168.1.1"
    ["ports"]=>
    array(3) {
      [0]=>
      int(8001)
      [1]=>
      int(8001)
      [2]=>
      int(8002)
    }
    ["connection_max"]=>
    int(5000)
    ["enabled"]=>
    bool(true)
  }
  ["servers"]=>
  array(2) {
    ["alpha"]=>
    array(2) {
      ["ip"]=>
      string(8) "10.0.0.1"
      ["dc"]=>
      string(6) "eqdc10"
    }
    ["beta"]=>
    array(2) {
      ["ip"]=>
      string(8) "10.0.0.2"
      ["dc"]=>
      string(6) "eqdc10"
    }
  }
  ["clients"]=>
  array(2) {
    ["data"]=>
    array(2) {
      [0]=>
      array(2) {
        [0]=>
        string(5) "gamma"
        [1]=>
        string(5) "delta"
      }
      [1]=>
      array(2) {
        [0]=>
        int(1)
        [1]=>
        int(2)
      }
    }
    ["hosts"]=>
    array(2) {
      [0]=>
      string(5) "alpha"
      [1]=>
      string(5) "omega"
    }
  }
}

配置信息示例

接下来我们试着将 Laravel 的配置信息 config/database.php 解析为 TOML ,做个对比。

需要注意的是,这只是一个示范,Laravel 的配置系统要比 TOML 高级很多,这里这样做的目的只是想在我们熟悉的配置信息里去理解 TOML:

[database]
    default = "Mysql"
    migrations = "migrations"

    [database.connections.sqlite]
        driver = "sqlite"
        database = "path/to/database.sqlite"
        prefix = ""

    [database.connections.mysql]
        driver = "mysql"
        host = "127.0.0.1"
        port = "3306"
        database = "forge"
        username = "forge"
        passWord = ""
        unix_Socket = ""
        charset = "utf8mb4"
        collation = "utf8mb4_unicode_ci"
        prefix = ""
        strict = true

    [database.Redis]
        client = "predis"

        [database.redis.default]
            host = "127.0.0.1"
            password = ""
            port = 6379
            database = 0

目前来讲,TOML 并不允许 nilnull 值,这在一些使用 null 作为默认值的场景下会变得很不方便。

缩进是允许的,但是不强求,上面的文件使用以下写法也不会有问题:

[database]
default = "mysql"
migrations = "migrations"

[database.connections.sqlite]
driver = "sqlite"
database = "path/to/database.sqlite"
prefix = ""

# ...

构建一个 TOML 配置文件

扩展包 yosymfony/toml 除了提供解析 TOML 文件和字串外,还提供了一个 TomlBuilder 类,用来实时构建 TOML 配置信息,接下来我们还是使用 Laravel 的 config/services.php 来作为例子讲解:

<?php

use Yosymfony\Toml\TomlBuilder;

require __DIR__.'/vendor/autoload.php';

$builder = new TomlBuilder();

$services = $builder
    ->addComment('Third Party Services')
    ->addComment('Mailgun')
    ->addTable('services.mailgun')
        ->addValue('domain', 'mg.example.com')
        ->addValue('secret', 'mailgun-secret')
    ->addComment('Stripe')
    ->addTable('services.stripe')
        ->addValue('model', 'App\User')
        ->addValue('key', 'stripe-key')
        ->addValue('secret', 'stripe-secret')
;

file_put_contents(__DIR__.'/services.toml', $services->getTomlString());

生成的内容如下:

#Third Party Services
#Mailgun

[services.mailgun]
domain = "mg.example.com"
secret = "mailgun-secret"
#Stripe

[services.stripe]
model = "App\\User"
key = "stripe-key"
secret = "stripe-secret"

日期

TOML 支持 RFC 3339 制定的日期格式:

# Offset Date-Time
odt1 = 1979-05-27T07:32:00Z
odt2 = 1979-05-27T00:32:00-07:00
odt3 = 1979-05-27T00:32:00.999999-07:00
# space permitted per the RFC 3339 spec
odt4 = 1979-05-27 07:32:00Z

# Local Date-Time
ldt1 = 1979-05-27T07:32:00

# Local Date
ld1 = 1979-05-27

# Local Time
lt1 = 07:32:00
lt2 = 00:32:00.999999

在此篇文章编写时,上面大部分的格式都出现了错误,除了下面这一行:

dob = 1979-05-27T07:32:00-08:00

PHP 解析器会将解析成功输出为 DateTime 实例:

array(1) {
  ["dob"]=>
  object(DateTime)#128 (3) {
    ["date"]=>
    string(26) "1979-05-27 07:32:00.000000"
    ["timezone_type"]=>
    int(1)
    ["timezone"]=>
    string(6) "-08:00"
  }
}

阅读更多

前往官方项目页了解更多信息 —— GitHub -- toml-lang/toml: Tom's Obvious, Minimal Language。

项目 Wiki 里可以找到各种语言的解析器: toml-lang/toml Wiki 。

英文原文地址:https://laravel-news.com/toml-configuration-in-php

以上就是什么是TOML?PHP中怎么配置使用TOML的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 什么是TOML?PHP中怎么配置使用TOML

本文链接: https://www.lsjlt.com/news/34133.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么是TOML?PHP中怎么配置使用TOML
    本篇文章带大家聊聊PHP中的TOML配置,介绍一下在 PHP 中如何使用 TOML 配置文件格式语言,希望对大家有所帮助!php零基础到就业直播视频课:进入学习全程直播 + 实战授课 + 边学 + 边练 + 边辅导【推荐】《接口如何自动化测...
    99+
    2022-09-21
  • 怎么用Python解析toml配置文件
    举个例子有了 ini 和 yaml,相信 toml 学习来也很简单,先直接看一个例子吧。import toml config = """ title = "toml 小栗子" [owne...
    99+
    2023-05-21
    Python toml
  • linux中yum是什么及怎么配置使用
    这篇文章主要介绍了linux中yum是什么及怎么配置使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux中yum是什么及怎么配置使用文章都会有所收获,下面我们一起来看看...
    99+
    2023-04-27
    linux yum
  • vue中使用typescript配置步骤是什么
    这篇文章主要讲解了“vue中使用typescript配置步骤是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中使用typescript配置步骤是什么”吧!1、vue老项目引入Typ...
    99+
    2023-06-21
  • php中的apache怎么配置
    要配置Apache服务器以运行PHP,可以按照以下步骤进行操作:1. 在Apache服务器上启用PHP模块。在Apache的配置文件...
    99+
    2023-08-30
    php apache
  • php中php.ini配置文件有什么用
    这期内容当中小编将会给大家带来有关php中php.ini配置文件有什么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ...
    99+
    2023-06-20
  • php配置虚拟主机的作用是什么
    配置虚拟主机的作用是将一个物理服务器划分为多个虚拟主机,每个虚拟主机拥有独立的域名、目录和配置。这样可以实现多个网站在同一台服务器上...
    99+
    2023-09-07
    php 虚拟主机
  • idea中怎么配置使用gitlab
    Git是一个流行的版本控制系统,它允许用户在开发过程中进行版本控制,并协作开发代码。GitLab是一个基于Git的网站,它为用户提供了一个使用Git进行版本控制的平台。Idea是一个受欢迎的Java开发环境,它可以使用GitLab实现代码版...
    99+
    2023-10-22
  • vue中router怎么配置使用
    这篇文章主要介绍了vue中router怎么配置使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 路由,其实就是指向的意思,当我点击页面上的...
    99+
    2022-10-19
  • Vue中怎么配置使用process.env
    这篇文章主要讲解了“Vue中怎么配置使用process.env”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue中怎么配置使用process.env”吧!vue process.envpr...
    99+
    2023-07-05
  • k8s中kubeconfig怎么配置使用
    这篇文章主要讲解了“k8s中kubeconfig怎么配置使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“k8s中kubeconfig怎么配置使用”吧!1、概述kubeconfig文件保存了...
    99+
    2023-06-26
  • php中怎么配置Cookie加密
    小编给大家分享一下php中怎么配置Cookie加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明Cookie在客户端浏览器的传输的HTTP头也是明文的。通...
    99+
    2023-06-15
  • VUE中data配置的作用是什么
    本文小编为大家详细介绍“VUE中data配置的作用是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“VUE中data配置的作用是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.data是什么?有什么作用...
    99+
    2023-07-05
  • Django怎么配置使用
    本篇内容主要讲解“Django怎么配置使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django怎么配置使用”吧! 1. 准备工作   &nb...
    99+
    2022-10-19
  • 怎么配置使用redis
    本篇内容主要讲解“怎么配置使用redis”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么配置使用redis”吧!Spring-data-redis为spring-data模块中对redis的支...
    99+
    2023-06-04
  • SpringMVC使用注解配置方式是什么
    本篇内容主要讲解“SpringMVC使用注解配置方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringMVC使用注解配置方式是什么”吧!SpringMVC注解配置方式使用配置类和注...
    99+
    2023-06-30
  • php中什么是POST请求?怎么使用?
    在Web开发和创建动态网站中,收集和处理用户输入数据是非常重要的。通过POST方法,我们可以向服务器发送大量的数据并接收来自服务器的响应。在本文中,我们将深入了解PHP中的POST请求的用法和步骤。一、什么是POST请求?POST是一个HT...
    99+
    2023-05-14
    php post请求 post
  • php安装和配置的步骤是什么
    要安装和配置PHP,可以按照以下步骤进行: 下载PHP:首先访问PHP官方网站 (https://www.php.net/dow...
    99+
    2023-10-23
    php
  • Android中的OpenGL怎么配置使用
    这篇文章主要介绍“Android中的OpenGL怎么配置使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android中的OpenGL怎么配置使用”文章能帮助大家解决问题。介绍Android 可通...
    99+
    2023-07-05
  • Linux中mplayer怎么配置和使用
    在Linux中,你可以通过以下步骤配置和使用mplayer: 安装mplayer:打开终端,运行以下命令安装mplayer: s...
    99+
    2023-10-23
    Linux mplayer
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作