Tweet

Projelerinizi PHP Namespace'ler ile organize edin

PHP Haziran 2009 da yayınlanan 5.3 sürümü ile büyük bir yol katetmiş oldu. 5.0 versiyonuna kadar köklü vede büyük değişiklikler görememiştik, fakat 5.3 sürümünde yeni nesil programlama dillerinin en önemli özelliklerinden olan namespaceler ile çalışma ve PHP projelerinizde object oriented yapısını kullanma imkanı sunuyor. OOP desteği php ye daha önceden eklenmiş olsada namespace desteği 5.3 versiyonu ile geliyor. [...]

C++, Java yada ASP.NET de kullanılan herhangi bir dil ile kodlama yapan yazılımcılar namespace'lerin nimetlerinden yararlanırken, biz PHP programcıları uzun class tanımlamaları ile yapımızı namespacelere benzetmeye çalışırdık.

Class isimlendirilirken, ismin amacı yansıtması önemlidir. Doğru bir şekilde tanımlandığında isim çakışması oluşmaması garanti altına alınmış olunur. Ne yazıkki bu isimlendirmeler fazlası ile uzun ve de ekstra bir getirisi yoktur.

Örneğin
Zend_Service_DeveloperGarden_Response_ConferenceCall_CreateConferenceResponseType

Class'ını Zend Framework içerisinde bulabilirsiniz. 81 karakter ile Zend'in kendi programlama standardını kendisi kırdığını görüyoruz. Üstelik bu Zend Framework deki en uzun class ismide değil.

Namespace'lerin daha kısa class isimleri dışında aşağıda olduğu gibi başka getirileride mevcut.

CODE:
<?php
namespace EpixaService;

use EpixaModelArticleModel,
EpixaModelAuthorModel;

class ArticleService extends AbstractService
{
/**
* @param string $title
* @param AuthorModel $author
* @return ArticleModel
*/
public function create($title, AuthorModel $author)
{
$article = new ArticleModel();
$article->title = $title;
$article->author = $author;
return $article;
}
}


Namespace tanımlarken aynı zamanda tanmlanan sınıfın ne çeşit bir sınıf olduğu belirtilebilir. Yukarıdaki örnek tanımlanan class'ın Epixa namespace'i içerisinde çalışacak bir servis olacağını belittik.

Basit bir namespace tanımyla birlikte, dosyamızda diğer namespace'leride kullanabiliriz. Biz bu örnekte ArticleModel and AuthorModel sınıflarını dosyamıza dahil etmeyi tercih ettik. Böylece EpixaModel namespace'ini basit birşekilde kullanmaya hazır hale getirdik. Dilediğimizde namespace içerisinde yer alan tüm modeller için instance yaratabiliriz. Fakat kullanmayı düşündüğüm özel modelleri eklemenin en iyi yolu miras alarak bir class yaratmaktır.

Örnekte

CODE:
class ArticleService extends AbstractService {


satırı ile miras alarak bir class yaratmış olduk.

Bu noktada türünü ve bağımlıklarını bildiğimiz bir class yaratmış olduk. Böylece daha profesyönel ve temiz kodlar yazmanın önündeki engelleri kadırmış olduk.


Dia
okanatabag@gmail.com
5 Aralik 2010 09:21

İlgili Olabilecek Makaleler


Yorumlar (1)





Oguzz
6 Aralik 2010 03:18
Çok güzel bir yazı.Php diline yeni başladım bende. .Net ile çok zaman geçiren benim gibi insanlar isim alanlarının nimetlerini iyi bilirler php adaptasyon sürecinde.Böyle bir özelliğin gelmesi gerçekten faydalı oldu.C# ile uygulama geliştiren yazılımcılar php ile daha rahat kod yazabilecekler sanırım.

Ziyaretçi olarak yorum yazamazsınız. Üye olmak için tıklayın Üye iseniz giriş yapın.



MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg