PHP Fonksiyon için Tasarım İpuçları Dosyaları Dahil

4 Cevap php

İyi bir tasarım, sadece bir kez, her işlevi yazma belirler. PHP Ben PHP komut include_once ile, (Utils.php ve Authenticate.php gibi) include dosyaları kullanarak yapıyorum. Ancak ben herhangi bir standartlar bulmak mümkün olmamıştır veya PHP için en iyi uygulamaları dosyaları içerir. StackOverflow de ne önerirsiniz?

Ben arıyorum:

  • Standartları İsimlendirme
  • Kod Standartları
  • Design Patterns
  • Suggestions for defining return types of common functions (now I'm just using associative arrays).

4 Cevap

Ben kullanmak gibi biri kongre ClassName.class.php adında kendi dosyasında her sınıf koymak ve daha sonra sınıf dosyaları eklemek için autoloader kurmaktır. Ya da bazen bir sınıfları / dizininde hepsini koymak gerekir ve sadece onlara ClassName.php isim. Non-sınıf I bekliyorum içerir kaç sınıf vs bağlıdır.

Eğer sınıflar halinde yarar fonksiyonları düzenlemek ve yerine onları statik yöntemleri yaparsanız, en üst düzey dosyaları tek bir require_once() yazı ile alabilirsiniz. Bu yaklaşım ya da kodu veya kodlama tarzı için uygun olmayabilir.

Dönüş türleri için olduğu gibi, ben yerleşik işlevler kullanılan kuralları takip etmeye çalışıyorum. Isteğine uygun bir türü dönmek, ya da başarısızlık return false. Sadece emin olun kullanmak === operator sonuçlarında sahte için kontrol ederken.

Eğer sözleşmeler konusunda endişeleriniz olduğunu gerçeği doğru yolda zaten konum göstermektedir. Vb Java, C + +, C #, gibi herhangi bir diğer OOP dili ile aşina iseniz, o zaman OOP goodness in PHP5 için aynı sözleşmeler sayesinde bir çok takip edebilirsiniz bulabilirsiniz.

Eğer onlar gerçekten dahil üzerinde herhangi bir kod çalıştırmasına ve asla iki kez aynı dosyayı dahil olmayan fonksiyonları için dosyaları dahil kullanırsanız emin olun (Java veya C #, mümkün ya da sufle almayı tercih) kullanarak sonuna kadar ne olursa olsun adlandırma kuralı. (Kullanım include-once veya require-once)

Bu tür bazı standartlar zaten yazılmıştı. En büyük projeler takip ve kendi standart olacaktır.

Here is one written by Zend and is the standard used in the Zend framework. http://framework.zend.com/manual/en/coding-standard.html

Also, PEAR always had some fairly strict coding standards: http://pear.php.net/manual/en/standards.php

Benim tercih cevap olsa kendi projesi için siz rahat hissediyorum ne kullanmak ve tutarlı olmasıdır. Diğer projeler için, onların kurallarına uymak. Tutarlılık büyük okunabilirliğe sağlar. Benim kendi standartları PEAR olanlar olarak aynı değildir. Ben dört boşluk (I sekmeleri kullanın) ile girinti yok ve ben fonksiyon isimleri gibi deve harf kullanmak asla, ama ben başka bir projede bir şey düzenleme ediyorum yine de eğer bu proje ne yaparsa giderim.

Ben aşağıdaki yaptık. Öncelikle, ben tüm web istekleri yakalamak için, bir yakalama filtresi yarattı, ben de komut satırı komutları ile çalışacak bir versiyonunu yarattı.

Hem önleyicilerin bir önyükleme dosyasına gitmek, hangi olur kurulum bir autoloader olacaktır. Autoloading fonksiyonu ve bir karma olarak bu dosya. Karma için anahtar sınıfı adıdır ve değeri sınıf dosyası için dosya yoludur. Özdevinimli_yükle işlevi sadece sınıf adını alır ve bir dosya üzerinde gerektirir çalışacaktır.

Onlar yorumlanır değil çünkü onlar biraz daha hızlı konum olarak, dosyayı tanımlayan tek tırnak kullanımı, onları gerekirse birkaç performans ipuçları, aynı zamanda kullanımı gerektiren / yerine kendi _once sürümleri, bu kez çalıştırmak için garanti edilir ve bulunur eski adil biraz daha hızlıdır.

Yukarıdaki, aslında, büyük hatta sınıfların bir ton ile büyük bir kod tabanı ile, karma büyük değildir ve performans bir endişe olmamıştı. Ve daha da önemlisi biz aşağıya bakın, bazı çılgın sözde adını alan sınıf adlandırma kuralı evli değiliz.

Diğer seçenek adı, sahte isim alanı hile sınırlandırılmıştır. Isim alanlarda 5.3 ile gelecek ve ben kod tabanı genelinde bu adlandırma olarak bu varlık brüt görmek daha az eğlenceli olacak gibi, bu daha az çekici. Ne olursa olsun, bu nasıl işliyor, tüm kod için bir kök varsayalım. Sonra bütün sınıflar, '_' gibi bir karakter, ve ardından sınıf adının kendisi dosya sınıftan sonra adı olacak, ancak ile sınırlandırılmış oraya gerekli dizin kastetmek dayalı adlandırılır. Bu şekilde sınıfın yer adına kodlama ve otomatik yükleyici bu kullanabilir. Bu yöntem ile sorun really_long_crazy_class_names_MyClass yanı sıra, her bir çağrı işleme adil biraz olduğunu, ancak erken optimizasyon olması, ve yine boşluk geliyor adlandırabilirsiniz.

örn.

/code root
ClassA ClassA.php
  /subfolder
  subFolder_ClassB ClassB.php