Jsonnet-PHP v1.3.0 釋出,支援 PHP 7 使用 Jsonnet

類別: IT
標籤: php

JsonNet-PHP 是 Google Jsonnet對 PHP的支援擴充套件.

  • pecl: http://pecl.php.net/package/jsonnet

  • github: https://github.com/Neeke/Jsonnet-PHP

  • gitee: https://gitee.com/neeke/Jsonnet-PHP

Change Log: 

1.3.0

- Update Lib JsonNet use v0.10.0.
- Support PHP 7.

1.2.0

- Update Lib JsonNet use v0.9.5.
- Add function JsonNet::fmtFile.
- Add function JsonNet::fmtSnippet.

Google Jsonnet Tutorial

jsonnet語言,為我們最常使用的json物件賦予了新的生命力。使用jsonnet來描述json物件,可以在json物件中方便地使用變數\引用\迴圈等語法,甚至可以書寫業務邏輯。

Install Jsonnet-PHP擴充套件

The pecl package is :  http://pecl.php.net/package/jsonnetpecl install jsonnet

Input (Jsonnet)

{    cocktails: {        // Ingredient quantities are in fluid ounces.         "Tom Collins": {            ingredients: [                { kind: "Farmers Gin", qty: 1.5 },                { kind: "Lemon", qty: 1 },                { kind: "Simple Syrup", qty: 0.5 },                { kind: "Soda", qty: 2 },                { kind: "Angostura", qty: "dash" },            ],            garnish: "Maraschino Cherry",            served: "Tall",        },        Manhattan: {            ingredients: [                { kind: "Rye", qty: 2.5 },                { kind: "Sweet Red Vermouth", qty: 1 },                { kind: "Angostura", qty: "dash" },            ],            garnish: "Maraschino Cherry",            served: "Straight Up",        },    }}

Output (JSON)

{    "cocktails": {        "Tom Collins": {            "ingredients": [                { "kind": "Farmers Gin", "qty": 1.5 },                { "kind": "Lemon", "qty": 1 },                { "kind": "Simple Syrup", "qty": 0.5 },                { "kind": "Soda", "qty": 2 },                { "kind": "Angostura", "qty": "dash" }            ],            "garnish": "Maraschino Cherry",            "served": "Tall"         },        "Manhattan": {            "ingredients": [                { "kind": "Rye", "qty": 2.5 },                { "kind": "Sweet Red Vermouth", "qty": 1 },                { "kind": "Angostura", "qty": "dash" }            ],            "garnish": "Maraschino Cherry",            "served": "Straight Up"         }    }}

Demo of PHP

JsonNet::evaluateFile('bar_menu.1.jsonnet');    $Snippet = '    {        cocktails: {            // Ingredient quantities are in fluid ounces.            "Tom Collins": {                ingredients: [                    { kind: "Farmers Gin", qty: 1.5 },                    { kind: "Lemon", qty: 1 },                    { kind: "Simple Syrup", qty: 0.5 },                    { kind: "Soda", qty: 2 },                    { kind: "Angostura", qty: "dash" },                ],                garnish: "Maraschino Cherry",                served: "Tall",            },            Manhattan: {                ingredients: [                    { kind: "Rye", qty: 2.5 },                    { kind: "Sweet Red Vermouth", qty: 1 },                    { kind: "Angostura", qty: "dash" },                ],                garnish: "Maraschino Cherry",                served: "Straight Up",            },        }    }    ';    var_dump(JsonNet::evaluateSnippet($Snippet));

PHP Re Result

/usr/local/php/php-7.0.6-zts-debug/bin/php --re jsonnetExtension [ <persistent> extension #40 JsonNet version v1.3.0 ] {  - Constants [2] {    Constant [ string JSONNET_PHP_VERSION ] { v1.3.0 }    Constant [ string JSONNET_PHP_AUTHOR ] { Chitao.Gao  [ [email protected] ] }  }  - Functions {    Function [ <internal:JsonNet> function jsonnet_get_version ] {    }    Function [ <internal:JsonNet> function jsonnet_get_author ] {    }  }  - Classes [1] {    Class [ <internal:JsonNet> class JsonNet ] {      - Constants [0] {      }      - Static properties [0] {      }      - Static methods [4] {        Method [ <internal:JsonNet> static public method evaluateFile ] {          - Parameters [1] {            Parameter #0 [ <required> $file_path ]          }        }        Method [ <internal:JsonNet> static public method evaluateSnippet ] {          - Parameters [1] {            Parameter #0 [ <required> $snippet_string ]          }        }        Method [ <internal:JsonNet> static public method fmtFile ] {          - Parameters [1] {            Parameter #0 [ <required> $file_path ]          }        }        Method [ <internal:JsonNet> static public method fmtSnippet ] {          - Parameters [1] {            Parameter #0 [ <required> $snippet_string ]          }        }      }      - Properties [0] {      }      - Methods [2] {        Method [ <internal:JsonNet, ctor> public method __construct ] {        }        Method [ <internal:JsonNet, dtor> public method __destruct ] {        }      }    }  }}

CodeTips

<?php/** * @author [email protected] * Date: 18/3/29 下午7:51 */const JSONNET_PHP_VERSION = 'v1.3.0';const JSONNET_PHP_AUTHOR  = '[email protected]';const CODE_SUCCESS = 1000;const CODE_ERROR   = 900;/** * @return string */function jsonnet_get_version(){    return JSONNET_PHP_VERSION;}function jsonnet_get_author(){    return JSONNET_PHP_AUTHOR;}class JsonNet{    public function __construct()    {        #JsonNet init    }    public function __destruct()    {        #JsonNet destroy    }    /**     * @param $file_path     *     * @return array     * @throws Exception     */    static public function evaluateFile($file_path)    {        throw new Exception('JsonNet::evaluateFile #error', CODE_ERROR);        return array();    }    /**     * @param $snippet_string     *     * @return array     * @throws Exception     */    static public function evaluateSnippet($snippet_string)    {        throw new Exception('JsonNet::evaluateSnippet #error', CODE_ERROR);        return array();    }    /**     * @param $file_path     *     * @return array     * @throws Exception     */    static public function fmtFile($file_path)    {        throw new Exception('JsonNet::fmtFile #error', CODE_ERROR);        return array();    }    /**     * @param $snippet_string     *     * @return array     * @throws Exception     */    static public function fmtSnippet($snippet_string)    {        throw new Exception('JsonNet::fmtSnippet #error', CODE_ERROR);        return array();    }}
Jsonnet-PHP v1.3.0 釋出,支援 PHP 7 使用 Jsonnet原文請看這裡