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 [ [email protected] ] }

  }

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

  }

  }

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

05-08 08:37