久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

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

本篇文章帶大家聊聊PHP中的TOML配置,介紹一下在 PHP 中如何使用 TOML 配置文件格式語言,希望對大家有所幫助!

什么是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 YosymfonyTomlToml;  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 YosymfonyTomlTomlBuilder;  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', 'AppUser')         ->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"   } }

閱讀

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
91日韩免费| 国产欧美在线| 国产精品免费99久久久| 亚洲精品激情| 亚洲一区国产| 蜜桃久久精品一区二区| 狠狠久久婷婷| 欧美日韩国产综合网| 国产视频一区三区| 亚洲综合精品四区| 综合欧美亚洲| 国产人成精品一区二区三| 欧美aa在线视频| 国产一区二区三区亚洲综合| 超碰成人av| 欧美日韩一二| 视频一区二区欧美| 日韩国产在线不卡视频| 国产精品入口久久| 中文av在线全新| 野花国产精品入口| 亚洲香蕉久久| 久久国产精品免费一区二区三区| 美腿丝袜在线亚洲一区| 亚洲啊v在线| 亚洲成人一区| 综合一区av| 欧美aa在线视频| 久久久久久久久久久妇女| 国产模特精品视频久久久久| 日韩欧美精品一区二区综合视频| 国产精品66| 久久婷婷av| 综合亚洲视频| 国产精品久久久久毛片大屁完整版| 国产一区二区三区久久久久久久久| 日韩欧美一区二区三区在线观看 | 欧美日韩国产一区精品一区| 国产亚洲精品自拍| 视频一区日韩| 福利片在线一区二区| 自拍日韩欧美| 欧美亚洲免费| 丝袜美腿一区| 西西人体一区二区| 国产精区一区二区| 久久久水蜜桃av免费网站| 亚洲另类视频| 久久国际精品| 三级精品视频| 91精品国产自产在线丝袜啪| 欧美gv在线| 日韩精品中文字幕吗一区二区| 日韩av二区| 中文字幕日韩亚洲| 天堂8中文在线最新版在线| 亚洲一区av| 日韩国产综合| 日本不卡不码高清免费观看| 日韩精品不卡一区二区| 亚洲人成亚洲精品| 日韩精品不卡一区二区| 日韩高清在线不卡| 国产美女高潮在线| 在线精品亚洲| 国产盗摄——sm在线视频| 欧美日韩亚洲一区三区| 日韩大片免费观看| 老牛国产精品一区的观看方式| 国产精品丝袜在线播放| 精品1区2区3区4区| 精品99在线| 日韩一二三区在线观看| 久久久久久久久久久9不雅视频| 久久国产视频网| 亚洲欧美日本国产专区一区| а√天堂8资源在线| 欧美精品中文| 精品中文字幕一区二区三区av| 蜜桃精品视频| 午夜精品福利影院| 欧美成人精品| 国产成人精品亚洲日本在线观看| 欧美在线观看天堂一区二区三区| 久久中文字幕av| 久久久国产精品网站| 日韩精品乱码av一区二区| 五月天综合网站| 韩国女主播一区二区三区| 日韩三级精品| 国产一区导航| 久久精品中文| 手机在线电影一区| 青草久久视频| 首页国产欧美久久| 欧美午夜精彩| 日韩在线高清| 伊人久久av| 日韩国产欧美一区二区三区| 日韩一级不卡| 久久国产亚洲精品| 久久一区亚洲| 国产精品毛片aⅴ一区二区三区| 蜜臀a∨国产成人精品| 国内精品福利| 亚洲精品国产嫩草在线观看| 精品国产aⅴ| 国产精品白浆| 日韩中文av| 免费看日韩精品| 一本色道精品久久一区二区三区| 99成人在线视频| 日韩精品麻豆| 91精品综合| 国产99久久| 久久久久国产| 中文另类视频| 中文字幕高清在线播放| 国内自拍视频一区二区三区| 久久99精品久久久野外观看| 欧美一区成人| 欧美一级一区| 欧美一区成人| 91成人在线精品视频| 亚洲精品影视| 亚洲精品激情| 日韩av中文字幕一区二区三区| 视频一区日韩精品| 日韩极品在线观看| 国产日韩视频| 国产精品一级在线观看| 国产精品视频一区二区三区四蜜臂 | 午夜精品亚洲| 久久精品中文| 激情综合自拍| 亚洲欧美视频| 亚洲免费专区| 欧美日韩亚洲一区二区三区在线| 欧美色综合网| 精品精品国产三级a∨在线| 91欧美在线| 99精品电影| 午夜在线视频一区二区区别| 日韩中文字幕一区二区高清99| 日韩精品免费视频人成| 国产欧美日韩一区二区三区四区| 欧美激情在线精品一区二区三区| 国产一区调教| 久久影视一区| 蜜桃视频第一区免费观看| 精品三级av在线导航| 老司机免费视频一区二区| 中文在线中文资源| 欧美大黑bbbbbbbbb在线| 日韩一区欧美二区| 国产日韩一区二区三区在线| 国产成人精品三级高清久久91 | 嫩草伊人久久精品少妇av杨幂 | 精品一区二区三区亚洲| 久久精品免费一区二区三区| 蜜臀国产一区二区三区在线播放| 热久久久久久| 天堂8中文在线最新版在线| 国产精品视区| 国产精品一区二区免费福利视频| 在线天堂中文资源最新版| 亚洲国产成人精品女人| 日韩av二区在线播放| 福利一区在线| 亚洲欧洲日本mm| 麻豆国产精品| 中文日韩在线| 日韩精彩视频在线观看| 中国字幕a在线看韩国电影| 男人操女人的视频在线观看欧美| 国产亚洲精品美女久久| 亚洲天堂资源| 亚洲精品护士| 在线一区av| 日本aⅴ免费视频一区二区三区| 久久久久久一区二区| 中文视频一区| 成人精品动漫一区二区三区| 中文一区在线| 福利一区视频| 婷婷精品久久久久久久久久不卡| 日韩在线二区| 视频一区二区国产| 高清av一区| 少妇精品在线| 日韩精品午夜| 国产欧美三级| 99国产精品视频免费观看一公开| 欧美激情aⅴ一区二区三区| 久久国产成人| 成人精品亚洲| 国产精品18| 日韩精品一二三| 九九色在线视频| 免费日韩成人|