Entity Varlık sınıfları Entity sınıfından genişletilir. genellikle import işlemlerini controllerda yaparsınız. aşağıdaki satırların controller da bulunması iyidir.
import("dbf.persistence"); import("models",true);
import fonksiyonun ikinci parametresinin true verilmesi durumda bu fonksiyon uygulamaya dahil edilecek dosyalara application/uygulamaadi/ içerisinede bakar.
Tekrar konumza yani varlık sınıflarına dönelim. varlık sınıflarını veri tabanındaki tablolarınız ile ilişkilendirirken haritalarken annotationları kullanırsınız.
Annotationlar
@Table(name = “blog”) tablo adı tanımlanır class sözcüğün üzerine yazılır
Name : parametresine tablo adı yazılır
@Column(name = “name” ,type = “string”) alan tanımlaması yapılır
Name :niteliğine alan adı yazılır. ilişkili private üyenin üzerine yazılmaldır.
üye private olmalıdır bu önemlidir çünki Faces ORM private üyelere tanır.
@Id birincil anahtarı tanımlar
ilişkisel annotationlar
@OneToOne
@OneToMany
üç paremetreleri bulunur
mappedBy = “Sınıf adı”
pk = ” primary key ”
fk = ” foreign key”
Olayı daha iyi kavrayabilmeniz için örneği inceleyin.
CREATE TABLE `blog` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) default NULL, `content` text, PRIMARY KEY (`id`) )
Yukarıdaki gibi bir tablomuz olsun.
/** * @Table(name = "blog") */ class Blog extends Entity { /** @Id @Column(name = "id" ,type = "integer") */ private $id; /** @Column(name = "name" ,type = "string") */ private $name; /** @Column(name = "content" ,type = "text") */ private $content; public function set($name, $value) { $this->$name= $value; } public function get($name) { return $this->$name; } }
Entity sınıfında hangi alanların güncellendiğini tespit etmek için __set ve __get metotları aşırı yüklenmiştir. bu yüzden set ve get metotlarını kullanın
dilerseniz her üye için get ve set metotlarınıda uygulaya bilirsiniz Faces ORM her iki yaklaşımıda benimser.
Varlık siniflarınızı application/uygulamaadi/models/ dizinine yerleştirin
application/uygulamaadi/models/blog.php gibi
Gelelim Controller içerisinden varlık nesnelerimize nasıl erişeceğimize.
import("phpf.controllers.facescontroller"); import("dbf.persistence"); import("models.*",true);//application/models dizini class BlogController extends FacesController { public function BlogController () { parent::FacesController(); $blog = new Blog(); $blog->name="Hello World"; $blog->content="Some text"; EntityManager::getInstance()->save($blog); //EntityManager::getInstance()->delete($blog); } }
Yukarıdaki satırlarda yeni bir Blog nesnesi oluşturulur değerler atanır ve son olarak blog nesnesi veri tabanına insert edilir.eğer blog nesnesi new ile kendi oluşturduğumuz bir nesne olmasaydı bu onun update edileceği anlamına gelmekteydi EntityManager::save(Entity) metodu varlık nesnesinin veritabındanmı yoksa yeni bir nesnemi olduğunu algılar ve bu duruma göre ya insert ya da update sözcükleri oluşturup veritabanı sunucusuna gönderir.
Varlık sınıflarını her seferinde elinizle yazmak zorunda değilsiniz. bunun için geliştirdiğim ufak bir java uygulaması var.
http://code.google.com/p/php-faces/downloads/list adresinden generator.zip dosyasını indirin. uygulamayı kullanabilmeniz için sisteminizde java vm nin kurulu olması kafidir. generator programı sizin için varlık sınıflarını oluşturacaktır.
tabiki bu kadar değil bir sonraki yazı EntityManager olacak.













