Euu Structured Mapper, PHP için basit ve deneysel bir veri dönüştürme kütüphanesidir.
Bu proje, attribute kullanarak dönüşüm tanımlamaları yapmayı ve veri türü dönüşümleri gerçekleştirmeyi kolaylaştırmayı hedefler. Aynı zamanda kullanımı son derece basit bir yapı sunar.
- Attribute ile Mapping Tanımlama: Dönüşüm kurallarını attribute kullanarak tanımlama imkanı.
- mapFrom ve mapTo ile Dönüşüm Tanımlama: Dönüşüm kurallarını kaynak veya hedef sınıfın herhangi birinde belirleyebilme.
- Direkt Property Üzerinde Tanımlama: Özellik bazlı dönüşüm tanımlamaları yapabilme.
- Context Aktarımı ve Kullanımı: Mapleme sırasında bağlam bilgilerini aktarabilme.
- Value Transformerlar: Tür, tip ve veri dönüşümleri için value transformer yapısı.
- Önemli Transformerlar: Doctrine Entity, Enum, Array item gibi yaygın dönüşümler için paketle birlikte gelen value transformerlar.
- Structure Read ve Storage Yapısı: Genişletilebilir bir yapı sağlayan structure reader ile dönüşüm tanımlamalarını farklı kaynaklardan okuyabilme.
- Custom Mapper Tanımlamaları: Özel yazılmış dönüşüm sınıflarını tanımlayabilme.(bknz: MapperRegistry ve MapperInterface)
- Array Elemanı Dönüşümleri: Array elemanlarını dönüştürme ve her elemanı value transformer ile işleyebilme imkanı.(bknz: ValueTransformer/ArrayItemTransform/ArrayItemTransformer.php)
- Sub Object Dönüşüm Tanımlayabilme: Child objelere dönüşüm tanımlamaları yapabilme. (bknz: ValueTransformer/ObjectTransform/WithMapper.php)
Projenize Composer kullanarak Euu Structured Mapper'ı ekleyin:
composer require emreuyguc/structured-mapper
Detaylı kullanım örnekleri için example/ExampleFactory.php
dosyasını inceleyebilirsiniz. Kendi kullanım senaryolarınıza göre mapper'ı init
edebilirsiniz.
example/MapFromExample.php
example/MapToExample.php
example/Dto/
example/Entity/
- Object Constructor Sorunu: Constructor içeren objeler dönüşüm esnasında
init
edilemiyor. Bu alan geliştirilmeye açıktır. (Öncelik: Yüksek) - Ters Dönüşüm İmkanı:
a -> b
dönüşümleri tanımlanmışsa, Aslında bunun ters dönüşümüde limitler dahilinde mümkündür (b -> a
) fakat bu özellik şuan desteklenmemektedir. (Öncelik: Orta) - Tip Dönüşüm Mekanizması: Genel tip dönüşümleri için bir mekanizma bulunmamaktadır. Kullanıcı bunu manuel gerçekleştirmelidir veya basit dönüşümler için
type_enforcement
parametresifalse
yapılabilir. (Öncelik: Düşük) - Property İsimlendirme: Property isimleri mapping esnasında manuel tanımlanır.Bunun yerine Otomatik bir isim dönüştürme mekanizması eklenebilir. (Öncelik: 0rta)
- Cache Mekanizması: Şu an için herhangi bir cache mekanizması mevcut değildir. Uygun bir cache yapısı eklenebilir. (Öncelik: Yüksek)
- Map kontrolü:
canMap
gibi bir metod eklenerek kontrol yapılabilir. (Öncelik: Yüksek) - Auto Sub Type Mapping: Child objelerin tiplerine göre arama yaparak dönüşüm yapabilme özelliği eklenebilir. (Öncelik: Orta)
- Custom Mapper Tanımında Dönüşüm Tipi kontrolü: Custom mapper tanımlamalarında geçerli Source ve Destination tanımlaması yapılabilir. Şuanda bu kontrol yapılmamaktadır. (Öncelik: Yüksek)
- Entity Find işlevinde Expression kullanımı: Entity dönüşümlerinde custom parametreler için expression lang kullanılabilir (Öncelik: Düşük)
- Testler: Testler yazılacak. (Öncelik: Yüksek)
Bu paket MIT Lisansı ile lisanslanmıştır.