• 迎丰收 晒丰收 庆丰收 2018-10-15
  • “捂脸表情”被注册成商标?申请人不认为商标侵权 2018-10-15
  • 战巡南海、绕岛巡航…空军有“飞出去”的主心骨 2018-10-14
  • 幼儿园要求家长写一万字读后感:不能这样玩家长|幼儿园|家长-教育时讯 2018-10-13
  • 中国故宫文物展在希腊举行 2018-10-13
  • 車·晓 第26期 車企官方降价真相幾何? 2018-10-12
  • 宝沃总裁杨嵩:曾和奔驰宝马同水平 已不能同日而语 2018-10-11
  • 新时代党员干部要有更大的担当和作为 2018-10-10
  • “2018-雷霆”专项行动破获百余起台湾间谍案 2018-10-09
  • 朝韩首脑今起在平壤会晤 “金文会”将聚焦三大议题 2018-10-09
  • 2018顺义啤酒节--北京频道--人民网 2018-10-08
  • 台湾遭遇的“断交潮”有无化解之道? 2018-10-08
  • 习近平会见爱沙尼亚总统卡柳莱德 2018-10-08
  • 中国空间站研制建设正有序开展 坚持和平利用 2018-10-07
  • Idlib to further divide Ankara and Moscow 2018-10-06
  • Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet

    栏目: 软件资讯 发布于: 2018-03-30 12:50:02

    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://www.rocksun.cn/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();
    ????}
    
    }

    【声明】文章转载自:开源中国社区 [http://www.rocksun.cn]

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet
    IT技术书籍推荐:
    Python黑帽子:黑客与渗透测试编程之道
    Python黑帽子:黑客与渗透测试编程之道
    塞茨 (Justin Seitz) (作者), 孙松柏 (译者), 李聪 (译者), 润秋 (译者)
    本书是畅销书《Python 灰帽子—黑客与逆向工程师的 Python 编程之道》的姊妹篇,那本书一面市便占据计算机安全类书籍的头把交椅。本书由 Immunity 公司的高级安全研究员 Justin Seitz 精心撰写。作者根据自己在安全界,特别是渗透测试领域的几十年经验,向读者介绍了 Python 如何被用在黑客和渗透测试的各个领域,从基本的网络扫描到数据包捕获,从 Web 爬虫到编写 Burp 扩展工具,从编写木马到权限提升等。 作者在本书中的很多实例都非常具有创新和启发意义, 如 HTTP 数据中的图片检测、 基于 GitHub命令进行控制的??榛韭?、浏览器的中间人攻击技术、利用 COM 组件自动化技术窃取数据、通过进程监视和代码插入实现权限提升、通过向虚拟机内存快照中插入 shellcode 实现木马驻留和权限提升等。通过对这些技术的学习,读者不仅能掌握各种 Python 库的应用和编程技术,还能拓宽视野,培养和锻炼自己的黑客思维。读者在阅读本书时也完全感觉不到其他一些技术书籍常见的枯燥和乏味。