2010-04-27 22 views
6

Web'den oluşturduğum veya kopyaladığım birçok işlev var.Yardımcı fonksiyonların nerede saklanacağı?

Sadece komut dosyasına eklediğim bir dosyada saklamam mı yoksa her işlevi bir sınıfta statik bir yöntem olarak saklamalı mıyım? Örn.,

örn. getCurrentFolder() ve isFilePhp() işlevim var.

olduklarını bir dosyada saklanır ya da gereken bir sınıftaki her bir:

klasör :: getCurrent() İçerik :: isPhp();

nasılsınız?

ben bu tür olduğunu bildiğiniz bir soruyu, "u istediğiniz kadar" ancak bazı öneriler/en iyi uygulamalar

sayesinde ile harika olurdu.

cevap

3

Haklısınız, bu oldukça öznel bir konu, ancak muhtemelen iki seçeneğinizin bir karışımını kullanıyorum.

Bir sınıf var (Helper söylemek) olmayan bir tanımlandığında, magic methods (PHP 5.3+ kullanıyorsanız ve/veya __callStatic()) __call() sahip olduğunu denir [statik] yöntemi, ilgili yardımcı dosyasını yükleyeceğiz ve yardımcı işlevini yürütün. Dosyaları dahil etmenin performansı düşürmesine rağmen aklınızda bulundurun. Ancak dosya organizasyonu açısından kazandığınız paranın çok küçük bir performans performansından çok daha fazla olduğuna inanıyorum.

Basit bir örnek:

class helper { 
    function __callStatic($m, $args) { 
     if (is_file('./helpers/' . $m . '.php')) { 
      include_once('./helpers/' . $m . '.php'); 
      return call_user_func_array($m, $args); 
     } 
    } 
} 

helper::isFilePhp(/*...*/); // ./helpers/isFilePhp.php 
helper::getCurrentFolder(/*...*/); // ./helpers/getCurrentFolder.php 

Ayrıca bu tarama parçacığını optimize etmek ve hatta sınıfların her birine __call[Static]() sihirli yöntemi ekleyerek ve uygulayarak, bu nedenle çeşitli yardımcıları türlerini (Klasör, Dosya) ve olabilir Yardımcı dosyalarınızın/işlevlerin klasör/dosya yapısında bazı mantık.

İlgili konular