2010-04-27 35 views
6

Tôi có rất nhiều chức năng tôi tạo hoặc sao chép từ web.nơi lưu trữ các chức năng trợ giúp?

tôi tự hỏi nếu tôi nên lưu trữ chúng trong một tệp mà tôi chỉ đưa vào tập lệnh hoặc tôi nên lưu trữ từng hàm như một phương thức tĩnh trong một lớp.

ví dụ: Tôi đã có một hàm getCurrentFolder() và isFilePhp().

họ nên được lưu trữ trong một tập tin như họ đang hoặc từng trong một lớp học:

Thư mục :: getCurrent() File :: isPhp();

bạn làm cách nào?

tôi biết đây là một câu hỏi "như bạn muốn" nhưng sẽ tuyệt vời với một số lời khuyên/thực tiễn tốt nhất

cảm ơn.

Trả lời

3

Bạn nói đúng, đây là vấn đề chủ quan nhưng tôi có thể sử dụng kết hợp hai tùy chọn của bạn.

Bạn có một lớp (nói Helper) có __call() (và/hoặc __callStatic() nếu bạn đang sử dụng PHP 5.3+) magic methods, khi một phương thức không xác định [tĩnh] được gọi là nó sẽ tải tệp trợ giúp tương ứng và thực thi hàm trợ giúp. Hãy nhớ rằng mặc dù bao gồm các tập tin làm giảm hiệu suất, nhưng tôi tin rằng lợi ích bạn đạt được trong điều khoản của tổ chức tập tin đến nay outweighs hit hiệu suất nhỏ.

Một ví dụ đơn giản:

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 

Bạn có thể tiếp tục tối ưu hóa đoạn mã này và thậm chí có một số loại người giúp đỡ (Folder, File) và như vậy, bằng cách thêm một phương pháp kỳ diệu __call[Static]() cho mỗi lớp học của bạn và thực hiện một số logic trong cấu trúc thư mục/tệp của các tệp/chức năng trợ giúp của bạn.

Các vấn đề liên quan