Hướng dẫn dùng yaml parser trong PHP

Spyc: https://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?

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/yaml

Có 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

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é

Hướng dẫn dùng yaml parser trong PHP

- config.php
 "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



    Viblo
    
Asia
Orange $1 Banana $2
  1. String
A string

'A singled-quoted string'

"A double-quoted string"
  1. Number
# an integer
12
# a float
13.4
  1. Boolean
true
false
  1. Array
array1: [1,2,3]
// or
array2:
  - 1
  - 2
  - 3
  1. Object
object1: {property1: value1, property2: value2}
//or
object2:
 - property1: value1
 - property2: value2
  1. Comment
# this is a 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:

  • http://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/yaml

Có 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

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é