• Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet


      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/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 [ 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 [ function jsonnet_get_version ] {

      }

      Function [ function jsonnet_get_author ] {

      }

      }

      - Classes [1] {

      Class [ class JsonNet ] {

      - Constants [0] {

      }

      - Static properties [0] {

      }

      - Static methods [4] {

      Method [ static public method evaluateFile ] {

      - Parameters [1] {

      Parameter #0 [ $file_path ]

      }

      }

      Method [ static public method evaluateSnippet ] {

      - Parameters [1] {

      Parameter #0 [ $snippet_string ]

      }

      }

      Method [ static public method fmtFile ] {

      - Parameters [1] {

      Parameter #0 [ $file_path ]

      }

      }

      Method [ static public method fmtSnippet ] {

      - Parameters [1] {

      Parameter #0 [ $snippet_string ]

      }

      }

      }

      - Properties [0] {

      }

      - Methods [2] {

      Method [ <internal:jsonnet, ctor="">public method __construct ] {

      }

      Method [ <internal:jsonnet, dtor="">public method __destruct ] {

      }

      }

      }

      }

      }

      CodeTips

      

      /**

      * @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();

      }

      }

      (编辑:雷林鹏 来源:网络)

  • 相关阅读:
    Js $.merge() 函数(合并两个数组内容到第一个数组)
    11.联结表---SQL
    函数作用域
    递归特性
    计算递归函数理解
    递归、问路函数
    全局变量用大写,局部变量用小写
    全局变量与局部变量
    函数形参和实参
    函数和过程
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9577282.html
Copyright © 2020-2023  润新知