Eğer classnames önek musunuz?

5 Cevap php

Basit bir soru: Eğer şirket adı ile PHP sınıfları (örneğin kütüphane sınıfları) önek mi?

Example : Zend prefix everything with "Zend_", but that's normal because this is a framework (so they want to avoid conflicts). Should I do the same for the library classes of my company ? Will I ever get conflicts ?

Ben bu öneki (kısa adları) olmadan kullanmak daha kolaydır, ama iyi bir uygulama bir önek sahip olduğunu düşünüyorum?

5 Cevap

PHP namespaces bulunmaktadır. Bunun yerine bir isim ile her şeyi prefixing bunları kullanmak gerekir.

Onlar sadece sınıflardan birini kullanmaya başlamak için MyFrameworkName... yazmaya tutmak zorunda değilsiniz zaman en azından, sizin geliştiriciler size teşekkür edecek.

Ben her zaman nedenlerle bir dizi için benim sınıfları önek

  • 5.2 hala birkaç yıl civarında olacak
  • 5.3 ad alanları tamamen çirkin, ben mide bulandırıcı almadan bunları kullanamazsınız
  • ve hey, elma) o da (NSString, CFXMLParser vb) ;) yapar

Cidden, bu tamamen açık sınıf adları önlemek için daha iyidir. Statiği kurtulmak ve bağımlılık enjeksiyon yerine new kullanın - ve sınıf adlandırma ile çok daha az ağrı olacak.

Evet, biliyorum. Benim müşteri çoğu henüz PHP 5.3 çalıştıran b / c ad alanları geçemezsiniz. Ben adlandırma çakışmalarını önlemek için garanti ediyorum, biraz daha yazarak umursamıyorum. Ben varolanların üstünde benim kendi özel kütüphanesini kullanarak ediyorum özellikle.

Hayır MCB ile benim CMS her sınıf prefixing dikkate rağmen, yani

class MCB_Admin
{
    // class contents...
}
$admin = new MCB_Admin;

Ancak, hızlı bir şekilde bu karşı karar ve şimdi sadece standart sınıf adları kullanabilirsiniz.

i yaşıyor klasör adı ile benim classnames olduğunu önek

<?php
    // filename would be "ClassName.php" in directory "directory"
    class directory_ClassName{

    }

son derece kolay __ autoLoad kullanarak yapmak yoludur

function __autoload( $class_name ){
    $file = explode( "_", $class_name );
    $file =  'app/' . implode( '/', $file ) . ".php";
    require_once( $file );
}

Eğer sınıfları yüklemek zorunda kalmazsınız, yani onun tüm automagicly yapılır