lib16 / xml
lib16 XML Builder is a PHP 7 library for creating XML documents.
Installs: 2 469
Dependents: 3
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: >=7.0
- lib16/utils: ^1.1.2
- myclabs/php-enum: ^1.5
Requires (Dev)
- phpunit/phpunit: ^6
README
A library for creating XML documents written in PHP 7.
Installation with Composer
This package is available on packagist,
so you can use Composer to install it:
composer require lib16/xml
Basic Usage
<?php require_once 'vendor/autoload.php'; use Lib16\XML\Xml; class Kml extends Xml { const MIME_TYPE = 'application/vnd.google-earth.kml+xml'; const FILENAME_EXTENSION = 'kml'; const XML_NAMESPACE = 'http://www.opengis.net/kml/2.2'; public static function createKml(): self { return static::createRoot('kml'); } public function placemark( string $name, string $description, float $longitude, float $latitude, float $altitude = null ): self { $pm = $this->append('Placemark'); $pm->append('name', $name); $pm->append('description', $description); $pm->append('Point')->append( 'coordinates', implode(',', array_filter([ $longitude, $latitude, $altitude ])) ); return $pm; } } $myKml = Kml::createKml(); $myKml->placemark( 'Cologne Cathedral', 'Cologne Cathedral is a Roman Catholic cathedral in Cologne, Germany.', 50.9413, 6.958 ); //$myKml->headerfields('cologne-cathedral'); print $myKml;
The generated markup:
<?xml version="1.0" encoding="UTF-8" ?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Placemark> <name>Cologne Cathedral</name> <description>Cologne Cathedral is a Roman Catholic cathedral in Cologne, Germany.</description> <Point> <coordinates>50.9413,6.958</coordinates> </Point> </Placemark> </kml>
The Adhoc
trait
Adhoc
allows you to use any method name not previously defined to add XML elements or attributes.
<?php require_once 'vendor/autoload.php'; use Lib16\XML\{Xml, Adhoc}; class Html extends Xml { use Adhoc; const XML_DECLARATION = false; const DOCTYPE = '<!DOCTYPE html>'; const HTML_MODE_ENABLED = true; public static function createHtml( string $lang = null, string $manifest = null ): self { return static::createRoot('html') ->attrib('lang', $lang) ->setManifest($manifest); } } $html = Html::createHtml('en'); $body = $html->body(); $article = $body->article(); $article->h1('Scripting languages'); $article->p( Html::abbr('PHP')->setTitle('PHP: Hypertext Preprocessor') . ' is a server-side scripting language designed for web development but also used as a general-purpose programming language.' ); print $html;
The generated markup:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html> <html lang="en"> <body> <article> <h1>Scripting languages</h1> <p><abbr title="PHP: Hypertext Preprocessor">PHP</abbr> is a server-side scripting language designed for web development but also used as a general-purpose programming language.</p> </article> </body> </html>