proger89 / convert-types
dev-main
2025-08-11 12:00 UTC
Requires
- colinodell/json5: ^2.3
- jtrumbull/xml-parser: ^1.0
- shtrihstr/html-serializer: dev-master
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2025-08-11 12:01:17 UTC
README
A flexible and extensible library for converting data between different formats.
Supported Conversions
- XML -> JSON
- JSON -> XML
- HTML -> JSON
- HTML -> XML
Installation
composer require proger89/convert-types
Usage
Basic Conversion
To convert data, create an instance of the Converter
class and use the convert
method. The library will automatically detect the input data type.
use Proger89\ConvertTypes\Converter; $converter = new Converter(); // Convert HTML to JSON $html = '<html><body><p>Hello World</p></body></html>'; $json = $converter->convert($html, 'Json'); echo $json; // Convert JSON to XML $json = '{"user": {"name": "John Doe", "email": "john.doe@example.com"}}'; $xml = $converter->convert($json, 'Xml'); echo $xml;
Extending the Library
The library is designed to be easily extensible. You can add your own converters and type detectors.
Adding a New Converter
To add a new converter, create a class that implements the ConverterInterface
and register it with the Converter
instance.
use Proger89\ConvertTypes\Converter; use Proger89\ConvertTypes\ConverterInterface; // 1. Create your custom converter class YamlToJsonConverter implements ConverterInterface { public function convert($data) { // Your conversion logic here... return json_encode(yaml_parse($data)); } } // 2. Register your converter $converter = new Converter(); $converter->addConverter('Yaml', 'Json', new YamlToJsonConverter()); // 3. Use it! $yaml = "user:\n name: Jane Doe\n email: jane.doe@example.com"; $json = $converter->convert($yaml, 'Json'); echo $json;
Adding a New Type Detector
To add a new type detector, create a class that implements the TypeDetectorInterface
and register it.
use Proger89\ConvertTypes\Converter; use Proger89\ConvertTypes\TypeDetectorInterface; // 1. Create your custom detector class YamlDetector implements TypeDetectorInterface { public function detect($data) { // Your detection logic here... // For example, check for common YAML syntax return is_string($data) && (strpos($data, ': ') !== false); } } // 2. Register your detector $converter = new Converter(); $converter->addDetector('Yaml', new YamlDetector()); // Now the converter can auto-detect YAML data
Running Tests
./vendor/bin/phpunit