Penggunaan fungsi YAML pada PHP

Anda mungkin bekerja sebagai pengembang, administrator, insinyur cloud, atau insinyur DevOps, dan terlepas dari peran Anda, Anda akan menemukan YAML dan penting bagi Anda untuk memahami apa dan bagaimana faktor yaml. Artikel ini disusun sedemikian rupa untuk membuat Anda nyaman dengan dasar-dasar yaml.

Sebelum memulai dengan dasar-dasar YAML, izinkan saya memberi Anda pengantar singkat tentang serialisasi Data.
Contents
Apa itu serialisasi data?Apa itu YAML?ekstensi YAMLStruktur Yaml DasarYAML komentarYAML tipe stringYAML tipe numerikYAML tipe BooleanYAML Null typeYAML Sequence typeYAML Dictionary typeYAML anchor dan aliasKesimpulanApa itu serialisasi data?

Sederhananya, serialisasi data adalah proses untuk mengubah data Anda ke format yang dapat disimpan, ditransfer melalui jaringan, dan ditafsirkan oleh application.

Tiga format serialisasi data yang paling umum adalah XML, JSON, YAML. Kami juga memiliki format lain seperti BSON, MessagePack, dan Protobuf, dll.

Baca artikel lain:

Panduan ini hanya berfokus pada apa itu YAML dan bagaimana cara bekerja dengan YAML, dengan contoh praktis.
Apa itu YAML?

YAML, singkatan dari YAML bukan bahasa markup, adalah bahasa serialisasi data yang merupakan superset dari JSON. YAML sangat populer karena kesederhanaannya. Sangat mudah untuk membuat dan membaca file yaml dibandingkan dengan XML atau json.

Alat modern seperti ansible, docker, Kubernetes, Chef, dll., dan lingkungan cloud seperti Aws, Azure, GCP menggunakan yaml. Anda akan melihat banyak file konfigurasi dan penyebaran yang ditulis menggunakan yaml. Misalnya, di Ansible, buku pedoman ditulis dalam yaml.

Banyak bahasa pemrograman populer memiliki pustaka untuk bekerja dengan yaml, sehingga yaml dapat dengan mudah diintegrasikan dengan lingkungan apa pun. Ekstensi
YAML File

YAML harus disimpan dengan ekstensi .yml atau .yaml. Setiap editor teks populer seperti Vscode, Atom, Vim, Sublime Text, dll., memiliki dukungan bahasa yaml.

Anda juga dapat menginstal ekstensi seperti yaml linter, yaml to json/XML converter, yaml beautify, dll. pada editor teks Anda yang akan menawarkan lebih banyak fitur ketika Anda bekerja dengan yaml.
Struktur Dasar Yaml

Struktur dasar yaml akan berupa urutan atau tipe kamus. Jenis urutan mirip dengan daftar python dan jenis kamus mirip dengan kamus python.

Dictionaries adalah pasangan nilai kunci di mana kuncinya adalah tipe string dan nilai dapat berupa jenis skalar apa pun. Untuk memisahkan kunci dan nilai gunakan titik dua (:).

Site_name: ostechnix

Setiap dokumen dalam aliran yaml harus dipisahkan menggunakan tiga tanda hubung (—) dan tiga titik (…). Tiga tanda hubung (—) menunjuk ke awal dokumen dan tiga titik (…) menunjuk ke akhir dokumen di aliran. Jika tidak ada banyak dokumen, tidak perlu menggunakan tanda hubung dan titik.

--- operating_system: Redhat version: 8 Same_family: - Rocky Linux - Alma Linux - Fedora Linux ... --- operating_system: Debian version: 11 Same_family: - Ubuntu - Linux Mint - Pop!_OS ...

Yaml menggunakan lekukan untuk mendefinisikan struktur objek. Tab tidak didukung dan Anda harus meninggalkan dua spasi untuk lekukan. Ketika Anda menekan editor teks saat bekerja dengan yaml, itu hanya akan menyisakan dua spasi atau setidaknya ini kasusnya dengan Vscode.

Anda akan mempelajari lebih lanjut tentang indentasi di bagian yang akan datang.

Saya akan menjalankan potongan kode python berikut yang akan mengurai file yaml dan mengubah tipe data menjadi tipe data python.

#!/usr/bin/python3 import yaml dengan open("input.yaml", 'r') sebagai f: dict = yaml.load( f, yaml.FullLoader) untuk k, v di dict.items(): print (k + " : " + str(v)) print("tipe data", " = ", type(v)) print()

You dapat menggunakan kode ini atau penerjemah online untuk menjalankan dan menguji kode yaml di artikel ini.
YAML comments

Comments memberikan pemahaman yang lebih baik bagi siapa saja yang membaca file yaml. Untuk menambahkan komentar di file yaml Anda, gunakan simbol #. Yaml tidak mendukung komentar multi-baris. Jadi jika Anda ingin menambahkan komentar multiline, Anda harus mengawali setiap baris dengan # simbol.

# FILE KONFIGURASI BERBASIS PoP_!OS COSMIC DESKTOP OS_NAME: "Pop!_OS" VERSION: 21.04 # VERSION 21.10 REACHED EOL CODE_NAME: COSMIC 

contoh di atas, ada dua komentar yang ditambahkan. Komentar blok ditambahkan pada baris pertama, dan yang kedua adalah komentar sebaris yang ditambahkan pada baris empat.
YAML string type

Strings di yaml dapat dibuat dengan tanda kutip atau tanpa tanda kutip. Yaml cukup pintar untuk menginterpretasikan tipe data secara internal. Di sini kuncinya adalah tipe string dan nilainya juga diatur menjadi tipe string.

Poin penting untuk diingat.
Membuat string tanpa menggunakan tanda kutip kecuali jika diperlukan.Gunakan tanda kutip ganda jika string berisi karakter escape khusus.Gunakan tanda kutip tunggal jika karakter khusus ditafsirkan sebagai literals.

User1_review: Pop_!os bagus untuk bekerja dengan User2_review: "Pop_!os t bagus untuk bekerja dengan" User3_review: 'Pop_!os t bagus untuk bekerja dengan'

As Saya katakan sebelumnya, yaml secara default mengetahui tipe data. Ada juga cara eksplisit untuk menentukan tipe data. Menggunakan !! simbol diikuti dengan tipe data dan nilai string.

User1_review: !!str Pop_!os bagus untuk digunakan dengan

Jika Anda memiliki baris string yang panjang tetapi ingin menulisnya dalam beberapa baris di dalam file yaml, Anda dapat melakukannya menggunakan > simbol. Ini disebut gaya terlipat. Parser Anda akan menafsirkan string sebagai satu baris meskipun Anda telah menulisnya dalam beberapa baris.

User4_review: > Di antara semua distribusi yang saya gunakan PoP_!OS terlihat bagus

Ketika string multiline perlu dicetak apa adanya, gunakan simbol pipa (|) . Ini disebut gaya literal.

User5_review: | Di antara semua distribusi yang saya gunakan PoP_!OS tampak hebat

Anda dapat menggunakan pengubah chomp untuk menghapus atau mempertahankan spasi di akhir nilai. Anda dapat menggunakan simbol “-” setelah > atau | untuk menghapus spasi.

User4_review: >- Di antara semua distribusi yang saya gunakan PoP_!OS tampak hebat. User5_review: |- Di antara semua distribusi yang saya gunakan PoP_!OS tampak hebat.

Jika Anda ingin mempertahankan ruang putih, Anda dapat menambahkan simbol “+” setelah | atau >symbols.

User4_review: >+ Di antara semua distribusi yang saya gunakan PoP_!OS tampak hebat. User5_review: |+ Di antara semua distribusi yang saya gunakan PoP_!OS tampak hebat.

YAML tipe numerik

Yaml mendukung tipe numerik Integer, Float, Desimal, atau Heksadesimal. Secara default yaml parser akan mendeteksi tipe data, tetapi ada juga cara eksplisit untuk mendefinisikan tipe data int dan float seperti yang ditunjukkan pada contoh di bawah ini.

int1: 98765 int2: !!int 56789 # Definisi Integer Eksplisit float1: 20.0481 float2: !!float 20.0482 # Definisi Float Eksplisit

Nilai heksadesimal dan oktal akan dikonversi ke nilai desimal oleh interpreter.

hex1: 0x14d3oct1: 014442

YAML Boolean type

Yaml mendukung nilai boolean “True” dan “False”. Anda juga dapat menggunakan “Ya” atau “aktif” yang menunjukkan “Benar”, dan “tidak” atau “tidak aktif” yang menunjukkan “salah”. Anda juga dapat secara eksplisit mendefinisikan tipe data menggunakan !!bool.

Tidak ada batasan huruf besar/kecil untuk nilai boolean. Dalam contoh di bawah ini, Anda dapat melihat saya telah menulis “True” dalam banyak kasus, dan parser menafsirkan semuanya menjadi nilai “True”.

upgrade: TrueReboot_After_Upgrade: TRUEEnable_Firewall: onSet_Power_Profile: yes

Kondisi serupa juga berlaku untuk nilai “False”.

upgrade: FalseReboot_After_Upgrade: FALSEEnable_Firewall: offSet_Power_Profile: no

Heads Up: Jika Anda mencoba mengapit nilai boolean dengan tanda kutip, itu akan diperlakukan sebagai string.
YAML Null type

Untuk membuat nilai null Anda dapat menggunakan simbol “~” atau “null” kata kunci. Anda juga dapat menentukan kunci dan membiarkan nilainya kosong yang akan diperlakukan sebagai nol. Anda juga dapat membuat definisi eksplisit menggunakan !!null.

Serupa dengan boolean, tidak ada batasan huruf besar untuk kata kunci “null”. Anda dapat melihat pada contoh di bawah ini kata kunci null ditulis dalam tiga kasus yang berbeda.

upgrade: !!null nullReboot_After_Upgrade: NULLEnable_Firewall: NullSet_Power_Profile: ~Set_Network_Interface: # NO VALUES PASSED

In python Nilai NULL ditafsirkan sebagai tipe “None” dan jika Anda mencoba mengonversi yaml ke json nilai null akan diinterpretasikan sebagai nilai null saja.
YAML Urutan type

Yaml sequence adalah daftar nilai yang disimpan secara berurutan. Pikirkan urutan seperti daftar python atau array di Perl di mana Anda akan mendefinisikan variabel dan menyimpan satu atau lebih nilai.

Ada beberapa cara untuk mendefinisikan urutan di yaml. Pertama adalah gaya in-flow di mana Anda akan memberikan nama kunci diikuti dengan daftar nilai di dalam tanda kurung siku. Ini mirip dengan python list.

# INFLOW STYLE SEQUENCE app_to_be_updated: [ "firefox", "timeshift"]

Cara kedua adalah membuat urutan menggunakan gaya blok. Setiap elemen dalam urutan akan diawali dengan tanda hubung diikuti dengan spasi dan nilai elemen. Setiap elemen harus ditulis dalam baris terpisah. Anda dapat memiliki lekukan dua spasi atau membuat urutan tanpa lekukan. Tetapi sebagai praktik terbaik, tetap gunakan indentation.

# BLOCK STYLE SEQUENCE app_to_be_installed: - vscode - virtualbox - tilix app_to_be_removed: - pycharm - stacer - ufw

Anda juga dapat membuat urutan bersarang seperti yang ditunjukkan di bawah ini. Produktivitas: – vscode – gelandangan – buruh pelabuhan – python3 – Browser: – firefox – chrome – keberanianYAML Kamus type

Kita telah melihat jenis kamus di bagian awal artikel ini. Kamus adalah pasangan nilai kunci yang merupakan salah satu blok pembangun inti di yaml. “Kunci” kamus selalu bertipe string dan nilainya dapat berupa jenis skalar apa pun.

Serupa dengan urutan, kamus juga dapat ditulis dalam berbagai cara. Pertama adalah gaya Inflow dan ini mirip dengan representasi python dictionaries.

application: { Instal: "Vscode", Hapus: Stacer, Perbarui: Firefox}

Dictionaries juga dapat dibuat menggunakan blok style.

application1: Instal: Vscode Hapus: Stacer Pembaruan: Firefox

Anda juga dapat membuat daftar kamus bersarang.

application2: Instal: python: 3.9 Vscode: 1.58.2 Hapus: - Stacer - pycharm Perbarui: Firefox

YAML jangkar dan alias

Anda dapat menerapkan KERING (Jangan Ulangi Diri Anda) di file yaml Anda menggunakan jangkar dan alias.

Anchor dilambangkan dengan simbol “&” dan alias dilambangkan dengan simbol ““.

Anchor mirip dengan variabel dalam pemrograman. Anda akan menentukan jangkar menggunakan & simbol diikuti dengan kata kunci dan kemudian menggunakan alias ( kata kunci) untuk memperluas nilai jangkar.

Perhatikan contoh di bawah ini. &x didefinisikan sebagai jangkar dan kemudian diperluas menggunakan alias *x.

User4_review: &x Di antara semua distribusi yang saya gunakan PoP_!OS tampak hebat.User5_review: *xUser6_review: *x

Anda dapat mengganti nilai tertentu saat menggunakan jangkar dan alias menggunakan