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

  }

  }

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

Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet的更多相关文章

  1. 阿里云 Serverless 应用引擎(SAE)发布 v1.2.0,支持一键启停、NAS 存储、小规格实例等实用特性

    近日,阿里云 Serverless 应用引擎(SAE)发布 v1.2.0版本,新版本实现了以下新功能/新特性: 一键启停开发测试环境:企业开发测试环境一般晚上不常用,长期保有应用实例,闲置浪费很高.使 ...

  2. yoyogo v1.7.4 发布,支持 grpc v1.3.8 & etcd 3.5.0

    YoyoGo (Go语言框架)一个简单.轻量.快速.基于依赖注入的微服务框架( web .grpc ),支持Nacos/Consoul/Etcd/Eureka/k8s /Apollo等 . https ...

  3. FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!

    FineUIMvc v1.4.0 已经于 2017-06-30 发布,FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC 控件库,是我们的新产品.由于和 FineUI(专业版)共 ...

  4. Visual Studio Code 1.0发布,支持中文在内9种语言

    Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...

  5. RapidJSON v1.1.0 发布简介

    时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...

  6. YoyoGo v1.7.2 发布, 支持 Nacos & Apollo 配置中心

    YoyoGo (Go语言框架)一个简单.轻量.快速.基于依赖注入的微服务框架( web .grpc ),支持Nacos/Consoul/Etcd/Eureka/k8s /Apollo等 . https ...

  7. 项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加)

    需求   在整理文件和一些其他头文件的时候,需要对其名称进行整理和修改,此工具很早就应该写了,创业后,非常忙,今天抽空写了一个顺便提供给学习.   工具和源码下载地址   本篇文章的应用包和源码包可在 ...

  8. AgileConfig 1.6.0 发布 - 支持服务注册与发现

    大家好,好久没有输出博文了,一是因为比较忙,另外一个原因是最近主要的精力是在给 AgileConfig 添加一个新的功能:服务注册与发现. 先说说为什么会添加这个功能.我自己的项目是用 Consul ...

  9. Yearning v1.3.0 发布,Web 端 SQL 审核平台

    企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...

随机推荐

  1. django migrate生成表结构DateTimeField 类型加了6位精度别的框架无法调用的问题?

    背景介绍 django migrate 生成表结构时,对于DateTimeField 类型的处理是加了6位精度的,只用django处理是没有任何问题的,但是如何别的框架来读取这种字段会读取不到该字段值 ...

  2. python中的内置函数总结

    官方文档 一. 数学函数 #abs() 绝对值 #bin() 二进制 0b #oct() 八进制 0o #hex() 十六进制 0x #complex 复数 x=1-2j print(x) print ...

  3. android 写入联系人

    public void testInsert() { ContentValues values = new ContentValues(); /* * 首先向RawContacts.CONTENT_U ...

  4. ORM到底是用还是不用?(复制)

    ORM即Object/Relation Mapping的简写,一般称作“对象关系映射”,在Web开发中最常出没于和关系型数据库交互的地方.接口.中间件.库.包,你都可以这么称呼它.ORM我们可以结合P ...

  5. windows计划任务定时运行synctoy的坑

    每次设置好synctoy之后,需要让synctoy运行一次,windows的计划任务才能成功执行,如果变更了synctoy的设置,而没有让synctoy成功执行过,windows计划任务将执行失败,坑 ...

  6. GYM - 101490 J Programming Tutors (匈牙利+二分)

    题意:有N个学生和N个老师,每个人都有自己的坐标X,Y,给每个学生匹配一个老师,要求N个匹配中的距离最大值最小.其中距离的定义为:|X − X’| + |Y − Y ‘|. 分析:一道典型的最大值最小 ...

  7. AJAX POST请求中参数以form data和request payload形式在php中的获取方式

    一.MINE TYPE问题: php对mime type为“application/x-www-form-urlencoded”(表单提交)和“multipart/form-data”(文件上传)的P ...

  8. DevOps简单介绍

    jenkins作为测试环境代码发布工具,sonar作为静态代码检查工具,idea作为开发工具,jira作为缺陷管理平台,upstream作为code review工具(正在研究).DevOps最近比较 ...

  9. [转] 把eclipse设置为黑色主题 方式二

    首先,废话不多说,给大家看一下我设置成黑色主题后的效果: 至于怎么达到这个效果呢,首先是中间的编辑区. 从我的云盘里下载压缩包,解压到eclipse目录的dropins文件夹下,你就会有各种各样的编辑 ...

  10. 二叉树的层次遍历(Java代码实现)

    与树的前中后序遍历的DFS思想不同,层次遍历用到的是BFS思想.一般DFS用递归去实现(也可以用栈实现),BFS需要用队列去实现. 层次遍历的步骤是: 1.对于不为空的结点,先把该结点加入到队列中 2 ...