XSD PHP sınıfları oluşturmak?

8 Cevap php

Is there in the world analogues of JavaBeans or JAXB for PHP? Is it possible to generate PHP classes from XML schema?

Bu XSD şemaları gibi API'leri yayınlamak için yaygın bir uygulamadır. Java ve C # adamlar sağ XSD'nin sınıfları oluşturarak bu avantajı elde edebilirsiniz. PHP için aynı araç var mı?

8 Cevap

I'm working now on this issue and going to release the tool as soon as it reaches more-less stable state. Check here http://mikebevz.com/xsd-to-php-tool/

Upd. Ben sadece prototip çalışma ilk serbest oldum, UBL 2.0 şemalar ve basit bir şema ile çalışıyor, ancak daha ciddi test yolda. Eğer çalışıyorsanız şemalar gönderirseniz sevinirim, bu yüzden test paketi bunları dahil ediyorum.

Upd. 2.. XSD2PHP sürümü 0.0.5 ulaştı. https://github.com/moyarada/XSD-to-PHP üzerinde ilerlemeyi kontrol

Belki de doğru teknoloji olduğunu SDO XML Data Access Service. Kısaca PHP belgeleri özetleyen (ve uygun istisna işleme sayarak), burada bir şema yüklemek bazı alanları ayarlayın ve sonra XML olarak dışa ediyorum nasıl.

$xmldas = SDO_DAS_XML::create("schema.xsd");
$doc = $xmldas->createDocument();
$rdo = $doc->getRootDataObject();
$rdo->nameFirst = "Brady";
$rdo->nameLast = "Doverspike";
echo $xmldas->saveString($doc, 4);

SDO artık mevcuttur ve PECL'de yüklemek olmaz unutmayın

XSD sınıf jeneratörleri kullanmak için ana nedeni olduğunu

  1. Zaman kontrol derlemek olsun
  2. Düz eski XML API daha kolay bir sözdizimi
  3. IDE Otomatik tamamlama.

Şimdi PHP ile kontrast. PHP not kontrol derleme zamanı ve gücü var mıdır dinamik yöntemleri / özellikleri için has desteği. Bu, yukarıda ana nedenlerinden iki kılar ve really otomatik tamamlama ihtiyacı olmadıkça bu olmayan bir konu yapar. Diğer bir deyişle, orada PHP bir XSD sınıf jeneratör kullanmak nedendir, ve hiçbiri yoksa bu yüzden de muhtemelen.

Benim önerim çalışma sırasında dinamik XML maç özelliklerini oluşturur Phps Simple XML kullanmaktır. Eğer XSD dosyası karşı XML doğrulamak ve daha sonra bir Basit XML nesnesi oluşturmak varsa, kodu oluşturmak zorunda kalmadan, yöntemleri ve özellikleri ile XML nesne yapısı tamamlandı var. PHP Gayet iyi bir yaklaşım.

Note that I don't state that SimpleXML is the same as generated XSD classes, of course not.. Ama oldukça yakın, kullanım ve API-bilge. Hala $company->employee[2]->firstname, ya bir yol gibi bir şey yapıyor sonunda.

XSD şemaları genellikle SOAP Web Hizmetleri WSDL dosyaları yazılır.

wsdl2php php sınıfları WSDL (XSD) şema ayrıştırma için bir araçtır. Istemci var gibi PHP'nin SoapClient kullanır.

Hızlı bir öğretici ve wsdl2php kullanımı için bu yazı bir göz atın:

http://itworkarounds.blogspot.com/2011/10/simple-soap-client-with-wsdl2php-using.html

PiBX bir JiBX ilham aracı olarak bir başka yeni aracı yoktur.

Site:

PiBX PHP için bir XML Veri Bağlama çerçevedir.

With PiBX you can generate PHP classes based off an available XML-Schema. These classes can be used to marshal the informations to XML without hassling with schema checks, constraints or restrictions.

Ben bir süre önce bu a içine baktı, ve ben kesinlikle bir bulamadık. Senin şema basit ise, düz şemalar için hacked a simple version together bir adam var.

Ben biliyorum hepsi bu. Normalde these guys ana dışındaki dilleri desteklemek de iyi, ama onlar da PHP yapmıyoruz.

The DMS Software Reengineering Toolkit is configurable code generation machinery, that can be used to process arbitrary formal documents as input. DMS can be used to generate code in arbitary output languages.

Biz şemaların yaşlı kuzeni DTDlerinden, gelen yerli Java ve COBOL XML okuyucular ve yazarlar oluşturmak için kullanmıştır. Aynı fikirler kolayca PHP uygulanabilir olacaktır.

XML üzerinde çalışmak için zor bir sözdizimi. Orada girdi olarak XML kullanan kod jeneratörler, ama sürece XML bu yol gitmek yok, sadece bir seçimdir. Ben geliştirirken kodunuzu oluşturmak istiyorum varsayarak, ve daha sonra bir sunucuya yükleyin duyuyorum.

Sonra, muhtemelen birden fazla dil (PHP + JavaScript / AJAX + HTML) hedef gerekecektir. Bu yüzden jeneratör, tek bir tanımı birden fazla varlık hedefleyebilir özel olarak ise SQL kodu, CRUD işlemleri için HTML sayfaları ve herhangi bir JS destek oluşturmak, bir veritabanı tablosu tanımı, örneğin (bir çoklu hedef kod jeneratör kullanmak daha iyi olurdu kodu).

Şu anda multi-hedefleme yapan bir kod jeneratör üzerinde çalışıyorum. Mevcut hiçbir ürün henüz ama http://www.abse.info de arkasında metodolojiyi kontrol edebilirsiniz.