JAXB bir PHP eşdeğer var mı? Bu Java geliştirme için çok yararlı oldu, ve yeni bir PHP'er olarak JAXB bir PHP dünyada sağlayan aynı kavramları kullanmak istiyorum.
Ben de daha önce aynı şeyi bulmaya çalışıyorum, ama yapamadı oldu. Yani XML nesneleri bağlamak JAXB'ın açıklamaları aynalar PHP 5.3 için kendi kütüphane yazmaya karar verdim.
Bunu buraya göz atın: https://github.com/lampjunkie/xml-hitch
Umarım diğerleri bu yararlı bulacaksınız.
Ben, JAXB benzer bir şey için ama PHP arıyordu
PiXB seems similar to JAXB, actually I didn't tried it but looking at the examples seems promising
Ben basit ve açıklamalar dayalı PAXB yazdı: https://github.com/ziollek/PAXB. Bu çözüm yeterli olup olmadığını kontrol edin.
XML bağlayıcı açıklamalarla örnek sınıfları
/**
* @XmlElement(name="root")
*/
class SampleEntity {
/**
* @XmlElement(name="attribute-value", type="AttributeValueEntity")
*/
private $nestedEntity;
private $text;
/**
* @XmlElementWrapper(name="number-list")
*/
private $number = array();
public function __construct($number = array(), $nestedEntity = null, $text = "")
{
$this->number = $number;
$this->nestedEntity = $nestedEntity;
$this->text = $text;
}
}
class AttributeValueEntity {
/**
* @XmlAttribute
*/
private $attribute;
/**
* @XmlElement
*/
private $value;
/**
* @param string $attribute
* @param string $value
*/
public function __construct($attribute = "", $value = "")
{
$this->attribute = $attribute;
$this->value = $value;
}
/**
* @return string
*/
public function getAttribute()
{
return $this->attribute;
}
/**
* @return string
*/
public function getValue()
{
return $this->value;
}
}
Marshalling örnek:
$sampleEntity = new SampleEntity(
array(1,2,3),
new AttributeValueEntity('sample attribure', 'sample value'),
'Sample text'
);
echo PAXB\Setup::getMarshaller()->marshall($sampleEntity, true);
ve çıktı:
<?xml version="1.0"?>
<root>
<attribute-value attribute="sample attribure">
<value>sample value</value>
</attribute-value>
<text>Sample text</text>
<number-list>
<number>1</number>
<number>2</number>
<number>3</number>
</number-list>
</root>
Unmarshalling
$xmlInput = '...'; //as above
/** @var SampleEntity $sampleEntity */
$sampleEntity = PAXB\Setup::getUnmarshaller()->unmarshall($xmlInput, 'SampleEntity');