1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet 下载

本帖由 漂亮的石头2018-03-30 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    488,244
    赞:
    47
    JsonNet-PHP 是 Google 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/jsonnet

    pecl 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 jsonnet

    Extension [ <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 [ neeke@php.net ] }
    }

    - 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 neeke@php.net
    * Date: 18/3/29 下午7:51
    */

    const JSONNET_PHP_VERSION = 'v1.3.0';
    const JSONNET_PHP_AUTHOR = 'neeke@php.net';

    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下载地址
     
正在加载...