php 代碼長(zhǎng)格式化擴(kuò)展PHP中用來(lái)解析和轉(zhuǎn)換YAML格式的擴(kuò)展格式php 代碼加密 擴(kuò)展
2021-11-30
老實(shí)說(shuō),我很少使用 YAML。在學(xué)習(xí)自動(dòng)化測(cè)試相關(guān)內(nèi)容的時(shí)候,接觸過(guò)使用這個(gè)配置文件配置CI的持續(xù)集成操作。當(dāng)然,當(dāng)時(shí)主要是學(xué)習(xí)。雖然接觸的不多,但我也知道,這種配置格式的寫(xiě)法現(xiàn)在已經(jīng)基本成為主流了。所以這里就不多解釋具體的yaml相關(guān)內(nèi)容了,不太熟悉的同學(xué)可以自行查閱一些相關(guān)文檔。
我們今天學(xué)習(xí)的主要是PHP中用于解析和轉(zhuǎn)換YAML格式的擴(kuò)展。安裝過(guò)程沒(méi)有什么特別的,就跟其他擴(kuò)展一樣安裝就行了。但是這個(gè)擴(kuò)展需要一個(gè)-,不能直接通過(guò)yum或者dnf安裝,下載地址可以在文末鏈接中找到。
將 PHP 數(shù)據(jù)轉(zhuǎn)換為 YAML
將PHP數(shù)據(jù)轉(zhuǎn)化為YAML,其實(shí)和JSON相關(guān)的操作類(lèi)似,將一個(gè)數(shù)組轉(zhuǎn)化為YAML格式的字符串。
$addr = ("" => "",""=> "",""=> (""=> "458 Dr. #292","city"=> "Oak",""=> "MI ",""=> ,),$ = (""=> ,"date"=> ,"bill-to"=> $addr,"ship-to"=> $addr,""=> ((" sku"=> "",""=> 4,""=> "籃球",""=> 450,),("sku"=> "",""=> 1,""=> "籃球",""=> 2392,),),"tax"=> 251.42,""=> 4443.52,""=> "遲到最好。
是@ 338-4338。",$ = ($);($);// (624) "---//: // date: // bill-to://: //: //://: |-// 458 Dr.// #292// 城市:橡樹(shù)//:MI//:// 運(yùn)送到://://://://:|-// 458 博士// #292//城市:橡樹(shù)//:MI//://://-sku://:4//:“\\”//:450//-sku://:1//:箍//: 2392// tax: 251. 42//: 4443. 52//: 遲到是最好的。是@ 338-4338。// "
可以看到()函數(shù)轉(zhuǎn)換的結(jié)果是非常標(biāo)準(zhǔn)的YAML格式。有 --- 在開(kāi)始和......在結(jié)束。但是你會(huì)發(fā)現(xiàn).yml文件中有很多教程或者框架是沒(méi)有這些符號(hào)的。根據(jù)官方文檔,這些符號(hào)是推薦寫(xiě)的,我們的擴(kuò)展非常遵循推薦,這就是轉(zhuǎn)換的結(jié)果。很標(biāo)準(zhǔn)。
此外,我們?cè)跍y(cè)試代碼中添加了中文內(nèi)容??梢钥吹皆谥苯愚D(zhuǎn)換時(shí)對(duì)中文進(jìn)行了編碼。就像JSON操作一樣,在YAML的擴(kuò)展功能中,我們也可以指定編碼格式php 代碼長(zhǎng)格式化擴(kuò)展,原樣顯示中文。
(($, ));// (616) "---//: 籃球 // ... // "將 YAML 轉(zhuǎn)換為 PHP 數(shù)組
沒(méi)錯(cuò),它類(lèi)似于JSON操作微信公眾號(hào)開(kāi)發(fā)網(wǎng)站開(kāi)發(fā),將YAML格式的字符串格式內(nèi)容逆向?yàn)镻HP數(shù)據(jù)內(nèi)容。
(($));// (8) {// [""]=>// int()// ["date"]=>// int()// ["bill-to" ]=>// (3) {// [""]=>// (5) ""http:// [""]=>// (6) ""http:// ………………
還有一個(gè)很簡(jiǎn)單的()函數(shù)。除了直接操作字符串之外php 代碼長(zhǎng)格式化擴(kuò)展,我們還可以直接提取文件內(nèi)容進(jìn)行轉(zhuǎn)換,包括上面的()函數(shù),也將結(jié)果直接寫(xiě)入文件。
(('.yml'));// (3) {// ["php"]=>// (3) {// [""]=>// (7) ""http:// [""]=>// (1) {// (10) ""http:// [""]=>// (1) {// / ["not-name"]=>// (2) {// (9) ".php"http:// (10) ".php"http:// }// [ "js"]=>// (1) {// [""]=>// (1) {// ["not-name"]=>// (1)@ > {// (14) ".mix.js"http:// }// ["css"]=>// bool(true)
我們測(cè)試的文件是它附帶的 .yml 文件。該框架不需要我們安裝這個(gè) YAML 擴(kuò)展??磥?lái)框架本身就有工具可以解決讀取和轉(zhuǎn)換YAML格式的問(wèn)題,這個(gè)我們最后再說(shuō)。與()類(lèi)似,()直接將PHP數(shù)據(jù)轉(zhuǎn)成YAML格式,直接寫(xiě)入文件。你可以自己測(cè)試一下。
回調(diào)函數(shù)處理標(biāo)簽
() 和 () 都支持回調(diào)參數(shù)操作。我們先來(lái)看一個(gè)例子。
// php://:! // :// ……………… ($){ ('','new', $);$ = 0;(('.yml', 0, $, [ '!'=>''] ));// (3) {// ["php"]=>// (3) {// [""]=>// (2 0) "new " // [""]=>// (1) {// ……………………
這是什么意思?!這種寫(xiě)法可以看作是YAML中的一種標(biāo)簽格式。這個(gè)回調(diào)的作用就是遇到這種類(lèi)型的類(lèi)似標(biāo)簽時(shí),使用什么回調(diào)函數(shù)來(lái)處理。例如,在我們的原始文檔中!以下內(nèi)容為。在回調(diào)函數(shù)中,我們將內(nèi)容替換為new,所以最終的輸出是字段的內(nèi)容變成了新的。當(dāng)然,更詳細(xì)的內(nèi)容和更多的語(yǔ)法還是需要我們對(duì)YAML格式的語(yǔ)法有更清晰的理解,這里就不多說(shuō)了,畢竟接觸的不多。
總結(jié)
這個(gè)擴(kuò)展的內(nèi)容不多,就算是需要在實(shí)際業(yè)務(wù)環(huán)境中操作的YAML格式的配置文件,估計(jì)我也不會(huì)用。為什么?當(dāng)然是因?yàn)橐呀?jīng)有很多處理YAML的組件供我們使用了。無(wú)需通過(guò)擴(kuò)展編譯安裝的方式改變服務(wù)器上的PHP環(huán)境。自己用的話(huà),可以在里面找到很多組件,如果用的話(huà),底層其實(shí)就是框架中的yaml處理組件。您可以直接使用 /yaml 將此組件添加到您自己的小項(xiàng)目中。具體內(nèi)容可以參考這個(gè)文檔:
測(cè)試代碼:
學(xué)習(xí)PHP中YAML操作擴(kuò)展的使用。
參考文件:
(x86-64)