YAML là gì?
YAML (YAML Ain’t Markup Language) là một chuẩn dữ liệu kiểu serialization dành cho tất cả các ngôn ngữ. Nó được sử dụng phổ biến để tạo ra các file config cho nhiều ứng dụng, VD: như Docker Compose.
Nội dung chính
- YAML là gì?
- Thông tin cơ bản:
- Cú pháp cơ bản
- Đọc 1 file YAML sử dụng ngôn ngữ lập trình
- Đọc file YAML trong Perl
- Đọc file YAML trong PHP
- Đọc file YAML trong Python
Thông tin cơ bản:
- Version mới nhất: 1.2
- Định dạng mở rộng: .yaml, .yml
- Tổ chức: yaml.org
Cú pháp cơ bản
Định nghĩa cấu trúc một danh sách (list) hay mảng (array)
# Programing Languages - PHP - Perl - NodeJS # Shopping list [milk, pumpkin pie, eggs, juice]Định nghĩa kiểu dữ liệu key-value
# Indented Block name: Nguyen Van A age: 33 # Inline Block {name: Nguyen Van A, age: 33}Định nghĩa ký tự dạng chuỗi, ký tự dạng chuỗi không yêu cầu dấu quote
data: | There once was a short man from Ealing Who got on a bus to Darjeeling It said on the door "Please don't spit on the floor" So he carefully spat on the ceiling data: > Wrapped text will be folded into a single paragraph Blank lines denote paragraph breaksĐịnh nghĩa 1 đối tượng
customer: first_name: Dorothy family_name: GaleĐọc 1 file YAML sử dụng ngôn ngữ lập trình
Đọc file YAML trong Perl
Sử dụng thư viện Perl có tên là YAML::XS để đọc bất kỳ file YAML nào. Để cài đặt module này các bạn sử dụng cài thông qua cpan
cpan YAML::XSĐoạn code example, mà mình sử dụng để load 1 file config.yml
#!/usr/bin/perl # # Read YAML Config File by vinasupport.com # use strict; use warnings; use YAML::XS 'LoadFile'; use Data::Dumper; my $config = LoadFile('config.yaml'); print Dumper($config);Đọc file YAML trong PHP
Để đọc file yaml trong PHP, các bạn có thể sử dụng function yaml_parse_file được PHP hỗ trợ sẵn. Đoạn code example như bên dưới.
<?php function cb_yaml_date($value, $tag, $flags) { return new DateTime($value); } $yaml = <<<YAML event1: name: My Event date: !date 25.05.2001 YAML; $ndocs = 0; $data = yaml_parse($yaml, 0, $ndocs, array('!date' => 'cb_yaml_date')); print_r($data);Ngoài ra PHP còn có rất nhiều thư viện bên ngoài như:
- symfony/yaml
Đọc file YAML trong Python
Trong Python, để đọc file yaml thì chúng ta cài đặt thư viện PyYAML thông qua pip3
pip3 install PyYAMLĐoạn sample code đọc yaml trong Python 3
#!/usr/bin/env python3 import yaml with open("configs.yaml", 'r') as stream: try: print(yaml.safe_load(stream)) except yaml.YAMLError as error: print(error)Nguồn: vinasupport.com
YAML là gì?
YAML (YAML Ain’t Markup Language) là một chuẩn dữ liệu kiểu serialization dành cho tất cả các ngôn ngữ. Nó được sử dụng phổ biến để tạo ra các file config cho nhiều ứng dụng, VD: như Docker Compose.
Nội dung chính
- YAML là gì?
- Thông tin cơ bản:
- Cú pháp cơ bản
- Đọc 1 file YAML sử dụng ngôn ngữ lập trình
- Đọc file YAML trong Perl
- Đọc file YAML trong PHP
- Đọc file YAML trong Python
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
- 1. YML YAML là gì? YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML. 2. YML khác YAML chỗ nào? Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé. 3. Tại sao chọn YML? Dễ nhìn, dễ chỉnh sửa, phù hợp ...
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
Nội dung chính
- YAML là gì?
- Thông tin cơ bản:
- Cú pháp cơ bản
- Đọc 1 file YAML sử dụng ngôn ngữ lập trình
- Đọc file YAML trong Perl
- Đọc file YAML trong PHP
- Đọc file YAML trong Python
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
- 1. YML YAML là gì? YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML. 2. YML khác YAML chỗ nào? Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé. 3. Tại sao chọn YML? Dễ nhìn, dễ chỉnh sửa, phù hợp ...
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
Nội dung chính
- YAML là gì?
- Thông tin cơ bản:
- Cú pháp cơ bản
- Đọc 1 file YAML sử dụng ngôn ngữ lập trình
- Đọc file YAML trong Perl
- Đọc file YAML trong PHP
- Đọc file YAML trong Python
Thông tin cơ bản:
- Version mới nhất: 1.2
- Định dạng mở rộng: .yaml, .yml
- Tổ chức: yaml.org
Cú pháp cơ bản
Định nghĩa cấu trúc một danh sách (list) hay mảng (array)
# Programing Languages - PHP - Perl - NodeJS # Shopping list [milk, pumpkin pie, eggs, juice]Định nghĩa kiểu dữ liệu key-value
# Indented Block name: Nguyen Van A age: 33 # Inline Block {name: Nguyen Van A, age: 33}Định nghĩa ký tự dạng chuỗi, ký tự dạng chuỗi không yêu cầu dấu quote
data: | There once was a short man from Ealing Who got on a bus to Darjeeling It said on the door "Please don't spit on the floor" So he carefully spat on the ceiling data: > Wrapped text will be folded into a single paragraph Blank lines denote paragraph breaksĐịnh nghĩa 1 đối tượng
customer: first_name: Dorothy family_name: GaleĐọc 1 file YAML sử dụng ngôn ngữ lập trình
Đọc file YAML trong Perl
Sử dụng thư viện Perl có tên là YAML::XS để đọc bất kỳ file YAML nào. Để cài đặt module này các bạn sử dụng cài thông qua cpan
cpan YAML::XSĐoạn code example, mà mình sử dụng để load 1 file config.yml
#!/usr/bin/perl # # Read YAML Config File by vinasupport.com # use strict; use warnings; use YAML::XS 'LoadFile'; use Data::Dumper; my $config = LoadFile('config.yaml'); print Dumper($config);Đọc file YAML trong PHP
Để đọc file yaml trong PHP, các bạn có thể sử dụng function yaml_parse_file được PHP hỗ trợ sẵn. Đoạn code example như bên dưới.
<?php function cb_yaml_date($value, $tag, $flags) { return new DateTime($value); } $yaml = <<<YAML event1: name: My Event date: !date 25.05.2001 YAML; $ndocs = 0; $data = yaml_parse($yaml, 0, $ndocs, array('!date' => 'cb_yaml_date')); print_r($data);Ngoài ra PHP còn có rất nhiều thư viện bên ngoài như:
- symfony/yaml
Đọc file YAML trong Python
Trong Python, để đọc file yaml thì chúng ta cài đặt thư viện PyYAML thông qua pip3
pip3 install PyYAMLĐoạn sample code đọc yaml trong Python 3
#!/usr/bin/env python3 import yaml with open("configs.yaml", 'r') as stream: try: print(yaml.safe_load(stream)) except yaml.YAMLError as error: print(error)Nguồn: vinasupport.com
Spyc: //github.com/mustangostang/spyc
Nội dung chính
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
- 1. YML YAML là gì? YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML. 2. YML khác YAML chỗ nào? Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé. 3. Tại sao chọn YML? Dễ nhìn, dễ chỉnh sửa, phù hợp ...
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
Nội dung chính
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
- 1. YML YAML là gì? YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML. 2. YML khác YAML chỗ nào? Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé. 3. Tại sao chọn YML? Dễ nhìn, dễ chỉnh sửa, phù hợp ...
- 1. YML YAML là gì?
- 2. YML khác YAML chỗ nào?
- 3. Tại sao chọn YML?
- II. Parse YML YAML như nào?
Pure PHP triển khai, vì vậy bạn không cần thực hiện bất kỳ sửa đổi nào đối với máy chủ để cài đặt. Nếu tốc độ là vấn đề đáng lo ngại, nó có thể không phải là giải pháp lý tưởng, nhưng nếu bạn đang sử dụng YAML cho cấu hình hoặc sử dụng khối lượng tương đối thấp, đó là một giải pháp tuyệt vời.
Đưa ra một tài liệu YAML, Spyc sẽ trả về một mảng mà bạn có thể sử dụng theo cách bạn thấy phù hợp.
require_once "spyc.php"; $data = Spyc::YAMLLoad($myfile);Đưa ra một mảng, Spyc sẽ trả về một chuỗi chứa tài liệu YAML được xây dựng từ dữ liệu của bạn.
$yaml_str = Spyc::YAMLDump($myarray);1. YML YAML là gì?
- YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML.
2. YML khác YAML chỗ nào?
- Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé.
3. Tại sao chọn YML?
- Dễ nhìn, dễ chỉnh sửa, phù hợp với các file config cho mọi ngôn ngữ
II. Parse YML YAML như nào?
Mỗi ngôn ngữ có một library để parse khác nhau. Không phải viết lại làm gì cả. Mình lấy ví dụ trong PHP
1. PHP
Sử dụng library symfony/yaml
composer require symfony/yamlCó file config.yaml như sau
store: "Viblo" address: "Asia" fruits: - name: "Orange" price: "1$" - name: "Banana" price: "2$"Đọc, xử lý trong file parse.php
<?php require 'vendor/autoload.php'; use Symfony\Component\Yaml\Yaml; $yamlContent = file_get_contents('config.yaml'); $parseContent = Yaml::parse($yamlContent); print_r($parseContent);Kết quả
Array ( [store] => Viblo [address] => Asia [fruits] => Array ( [0] => Array ( [name] => Orange [price] => 1$ ) [1] => Array ( [name] => Banana [price] => 2$ ) ) )Rất đơn giản phải không nào. Mình sẽ viết lại file config dưới dạng json, php array và xml để bạn thấy rõ hơn tại sao nên dùng YML nhé
- config.php<?php $config = [ "store" => "Viblo", "address" => "Asia", "fruits" => [ [ "name" => "Orange", "price" => "$1" ], [ "name" => "Banana", "price" => "$2" ] ] ]; // PHP gọi thẳng ra được tiện đấy :D. Nhưng project có ngôn ngữ khác parse đống này sao giờ :(- config.json
{ "store": "Viblo", "address": "Asia", "fruits": [ { "name" : "Orange", "price" : "$1" }, { "name" : "Banana", "price": "$2" } ] }- config.xml
<?xml version="1.0" encoding="UTF-8"?> <root> <store>Viblo</store> <address>Asia</address> <fruits> <fruit> <name>Orange</name> <price>$1</price> </fruit> <fruit> <name>Banana</name> <price>$2</price> </fruit> </fruits> </root>- String
- Number
- Boolean
- Array
- Object
- Comment
Mong bài hướng dẫn này có thể giúp các bạn áp dụng YML vào dự án của mình dễ dàng hơn. Thanks for reading
Source:
- //symfony.com/doc/current/components/yaml.html
1. YML YAML là gì? YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML. 2. YML khác YAML chỗ nào? Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé. 3. Tại sao chọn YML? Dễ nhìn, dễ chỉnh sửa, phù hợp ...
1. YML YAML là gì?
- YML và YAML là một ngôn ngữ đánh dấu văn bản tương tự HTML, XML.
2. YML khác YAML chỗ nào?
- Khác nhau mỗi extension thôi. Nội dung, cú pháp giống hết nhau. Do đó phần còn lại của bài viết mình sử dụng YML thôi nhé.
3. Tại sao chọn YML?
- Dễ nhìn, dễ chỉnh sửa, phù hợp với các file config cho mọi ngôn ngữ
II. Parse YML YAML như nào?
Mỗi ngôn ngữ có một library để parse khác nhau. Không phải viết lại làm gì cả. Mình lấy ví dụ trong PHP
1. PHP
Sử dụng library symfony/yaml
composer require symfony/yamlCó file config.yaml như sau
store: "Viblo" address: "Asia" fruits: - name: "Orange" price: "1$" - name: "Banana" price: "2$"Đọc, xử lý trong file parse.php
<?php require 'vendor/autoload.php'; use SymfonyComponentYamlYaml; $yamlContent = file_get_contents('config.yaml'); $parseContent = Yaml::parse($yamlContent); print_r($parseContent);Kết quả
Array ( [store] => Viblo [address] => Asia [fruits] => Array ( [0] => Array ( [name] => Orange [price] => 1$ ) [1] => Array ( [name] => Banana [price] => 2$ ) ) )Rất đơn giản phải không nào. Mình sẽ viết lại file config dưới dạng json, php array và xml để bạn thấy rõ hơn tại sao nên dùng YML nhé