[PHP8] Installieren und verwenden Sie die YAML-Funktion (YAML-Parser) von PECL mit Docker

Die [YAML-Funktion] von PHP (https://www.php.net/manual/ja/ref.yaml.php) ist standardmäßig nicht mit PHP gebündelt.

Um YAML-Daten in ein PHP-Array (Syntaxanalyse und -transformation) oder von einem PHP-Array in YAML-Daten mit der YAML-Funktion zu analysieren, müssen Sie die PECL-Erweiterung Jules (https: //www.php) installieren. .net / manual / ja / yaml.installation.php).

PECL ist jedoch nicht auf den neuesten Bildern (Stand: 28.08.2020) "php: 8.0.0beta2" und "php: 8.0.0beta2-alpine" installiert. Es scheint, dass PEAR / PECL-Installationsprogramm seit PHP 7.4 entfernt wurde.

TL; DR

Ich muss PECL aus dem Quellcode erstellen, was ebenfalls problematisch ist. Daher habe ich mit dem Befehl pecl ein Image erstellt. Es funktioniert nicht nur mit Intel / AMD, sondern auch mit ARMv5, v7, ARM64 wie Raspeye.

docker pull keinos/php8-jit:latest
$ docker run --rm keinos/php8-jit pecl version
PEAR Version: 1.10.12
PHP Version: 8.0.0-dev
Zend Engine Version: 4.0.0-dev
Running on: Linux 3fc54c34122a 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64

Da viele der vorgefertigten Pakete im PECL-Repository nicht funktionieren, können wir das PECL-Paket auch aus dem Quellcode installieren.

Brauchen Sie Yaml-dev


docker-php-ext-pecl install yaml

TS; DR

Dockerfile


FROM keinos/php8-jit:latest

USER root

COPY sample.php /app/sample.php

RUN \
    apk --no-cache add yaml-dev && \
    docker-php-ext-pecl install yaml

ENTRYPOINT [ "php", "/app/sample.php" ]

sample.php


<?php

//YAML-Beispielzeichenfolge
$yaml = <<<EOD
---
invoice: 34843
date: "2001-01-23"
bill-to: &id001
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to: *id001
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
EOD;

//Analysieren Sie die YAML-Zeichenfolge in das PHP-Array
$parsed = yaml_parse($yaml);

//Vergleichstest
$actual = json_encode($parsed);
$expect = '{"invoice":34843,"date":"2001-01-23","bill-to":{"given":"Chris","family":"Dumars","address":{"lines":"458 Walkman Dr.\n        Suite #292","city":"Royal Oak","state":"MI","postal":48046}},"ship-to":{"given":"Chris","family":"Dumars","address":{"lines":"458 Walkman Dr.\n        Suite #292","city":"Royal Oak","state":"MI","postal":48046}},"product":[{"sku":"BL394D","quantity":4,"description":"Basketball","price":450},{"sku":"BL4438H","quantity":1,"description":"Super Hoop","price":2392}],"tax":251.42,"total":4443.52,"comments":"Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."}';

echo '- Function test ... ', ($expect === $actual) ? 'OK' : 'NG', PHP_EOL;

Verweise

Recommended Posts

[PHP8] Installieren und verwenden Sie die YAML-Funktion (YAML-Parser) von PECL mit Docker
Verwenden Sie Puphpeteer mit Docker
Einweg-PHP mit Docker
Verwenden Sie GDAL mit Python mit Docker
Anfänger installieren Docker für Mac und bereiten die Betriebsumgebung php7.0 vor
Verwenden Sie log4j2 mit YAML + Gradle
[Docker] Wird immer mit Docker + Rails verwendet
Installieren Sie Java mit Ubuntu 16.04 Docker
Verwenden Sie Java mit MSYS und Cygwin
Installieren Sie Java und Tomcat mit Ansible
[PDO → DB-Verbindung mit Docker, PHP]
Verwenden von Git mit SourceTree und Eclipse
Verwenden Sie JDBC mit Java und Scala.
Hallo Welt mit Docker und C Sprache
Installieren Sie Xcode und verwenden Sie Hello Swift!
Microservices mit Docker- und Cloud-Leistung
Fordern Sie die Installation von WSL2 und Docker heraus
Verwenden von cuda11.0 mit pytorch mit Docker
Installieren Sie Docker und Docker-Compose unter Alpine Linux
Erstellen einer Rails 6- und PostgreSQL-Umgebung mit Docker
Installieren Sie Docker Desktop für Mac mit Homebrew
Verwenden Sie Symbolic Link für den mehrstufigen Build von Docker
Entfernen Sie wine3.0 und fügen Sie wine5.0 (winehq) in ubuntu18.04LTS ein
Authentifizierungsfunktion mit Play Framework [Registrierung und Authentifizierung]
Kommunizieren Sie zwischen Gitlab und Gitlab Runner, die mit Docker gestartet wurden
Installieren Sie Docker mit WSL2 Memo ([Teil 2] Docker-Einführung)
Installieren Sie Docker und erstellen Sie eine Java-Ausführungsumgebung