1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/neeke-Jsonnet-PHP

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Jsonnet для PHP

Google Jsonnet Tutorial

Jsonnet — это язык программирования, который используется для работы с данными в формате JSON. В этом языке есть как базовые функции, так и мощная объектная модель. Примеры, которые приводятся в этом руководстве, связаны с миром коктейлей. Они призваны развлечь читателя и показать, что Jsonnet можно применять в самых разных областях.

Обратите внимание, что при работе с JSON в Jsonnet происходит простое изменение порядка полей объекта. Это соответствует стандартам JSON, поскольку если порядок имеет значение, то вместо объекта следует использовать массив пар ключ-значение. Кроме того, изменение порядка ключей позволяет сравнивать выходные данные с помощью команды diff. Однако на этой странице выходные данные были вручную переставлены для удобства визуального сравнения с входными данными. Также было изменено форматирование выходных данных, чтобы они лучше смотрелись на странице. Поэтому при самостоятельном запуске примеров результаты могут отличаться (но быть эквивалентными).

Для получения дополнительной информации о Jsonnet посетите следующие страницы:

Установка Jsonnet для PHP

Пакет pecl для установки Jsonnet находится по адресу: http://pecl.php.net/package/jsonnet.

Чтобы установить Jsonnet, выполните следующие действия:

pecl install jsonnet

или:

wget -O Jsonnet.Latest.tar.gz https://pecl.php.net/get/jsonnet
mkdir Jsonnet-PHP && tar -xzvf Jsonnet.Latest.tar.gz -C ./Jsonnet-PHP
cd Jsonnet-PHP/Jsonnet-1.0.0

phpize
./configure
make && make install

Улучшения простого синтаксиса

Входные данные (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",
        }
    }
}

Выходные данные (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"
        }
    }
}

Демонстрация использования 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));
``` **Расширение**

[<persistent> расширение #40 Jsonnet версия v1.3.1] {
  - Константы [2] {
    Константа [строка JSONNET_PHP_VERSION] {v1.3.1}
    Константа [строка JSONNET_PHP_AUTHOR] {Chitao.Gao [neeke@php.net]}
  }

  - Функции {
    Функция [<internal:Jsonnet> функция jsonnet_get_version] {}
    Функция [<internal:Jsonnet> функция jsonnet_get_author] {}
  }

  - Классы [1] {
    Класс [<internal:Jsonnet> класс Jsonnet] {
      - Константы [0] {}

      - Статические свойства [0] {}

      - Статические методы [4] {
        Метод [<internal:Jsonnet> статический публичный метод evaluateFile] {
          - Параметры [1] {
            Параметр #0 [<required> $file_path]
          }
        }

        Метод [<internal:Jsonnet> статический публичный метод evaluateSnippet] {
          - Параметры [1] {
            Параметр #0 [<required> $snippet_string]
          }
        }

        Метод [<internal:Jsonnet> статический публичный метод fmtFile] {
          - Параметры [1] {
            Параметр #0 [<required> $file_path]
          }
        }

        Метод [<internal:Jsonnet> статический публичный метод fmtSnippet] {
          - Параметры [1] {
            Параметр #0 [<required> $snippet_string]
          }
        }
      }

      - Свойства [0] {}

      - Методы [2] {
        Метод [<internal:Jsonnet, ctor> публичный метод __construct] {}
        Метод [<internal:Jsonnet, dtor> публичный метод __destruct] {}
      }
    }
  }
}

**CodeTips**
```php
<?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();
  }
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

The Google Jsonnet for PHP Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/neeke-Jsonnet-PHP.git
git@api.gitlife.ru:oschina-mirror/neeke-Jsonnet-PHP.git
oschina-mirror
neeke-Jsonnet-PHP
neeke-Jsonnet-PHP
master