• 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 [ public method __construct ] {

      }

      Method [ 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();

      }

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

  • 相关阅读:
    centos7下编译安装python3.7,且与python2.7.5共存
    Linux下的ctrl常用组合键
    命令 docker rm | docker rmi | docker prune 的差异
    docker操作命令大全和后台参数
    解决Linux下ssh登录后出现 报错 Write failed: Broken pipe 的方法
    在centos7 中docker info报错docker bridge-nf-call-iptables is disabled 的解决方法
    Linux下实现不活动用户登录超时后自动登出
    centos下非yum方式安装docker环境
    Git Error:There is no tracking information for the current branch.
    Vim操作:打开文件
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/9558469.html
Copyright © 2020-2023  润新知