Hướng dẫn dùng initialize list trong PHP

LƯU Ý: Đây chính xác là những gì OP nói họ đã làm. [Nhưng không hiển thị mã cho.] Tôi hiển thị chi tiết ở đây, để bạn có thể so sánh nó với câu trả lời được chấp nhận. Quan điểm của tôi là bản năng ban đầu của OP là IMHO, tốt hơn câu trả lời mà anh ấy chấp nhận.

Dựa vào mức độ được đánh giá cao của câu trả lời được chấp nhận, tôi muốn chỉ ra câu trả lời "ngây thơ" cho việc khởi tạo một lần các phương thức tĩnh, hầu như không nhiều mã hơn so với triển khai Singleton - và có một lợi thế thiết yếu .

final class MyClass  {
    public static function someMethod1[] {
        MyClass::init[];
        // whatever
    }

    public static function someMethod1[] {
        MyClass::init[];
        // whatever
    }


    private static $didInit = false;

    private static function init[] {
        if [!$didInit] {
            $didInit = true;
            // one-time init code.
        }
    }

    // private, so can't create an instance.
    private function __construct[] {
        // Nothing to do - there are no instances.
    }
}

Ưu điểm của phương pháp này là bạn có thể gọi với cú pháp hàm tĩnh đơn giản:

MyClass::someMethod1[];

Đối chiếu nó với các cuộc gọi được yêu cầu bởi câu trả lời được chấp nhận:

MyClass::getInstance->someMethod1[];

Theo nguyên tắc chung, tốt nhất là trả giá mã hóa một lần, khi bạn mã hóa một lớp, để giữ cho người gọi đơn giản hơn.

Trong tất cả các câu trả lời [bao gồm cả câu trả lời này], tôi thích câu trả lời của Victor Nicollet . Đơn giản. Không cần thêm mã hóa. Không có mã hóa "tiên tiến" để hiểu. [Tôi khuyên bạn nên bao gồm nhận xét của FrancescoMM, để đảm bảo "init" sẽ không bao giờ thực hiện hai lần.]

Vì vậy, tôi không thể bận tâm để viết câu trả lời này. Nhưng rất nhiều người ủng hộ câu trả lời được chấp nhận, mà tôi kết luận rằng một số người chỉ đơn giản là không biết về cách tiếp cận rõ ràng, "ngây thơ" [mà tôi trình bày ở đây]. Hiểu điều này như một điểm khởi đầu.

0 hữu ích 0 bình luận chia sẻ

Ở bài trước chúng ta đã tìm hiểu được sơ lược cách load controller trong project MVC PHP nhưng đó không phải là cách mà chúng ta sẽ sử dụng, vì vậy trong bài này ta sẽ sửa lại một số phần mà ở bài trước đã làm như sửa file admin.php, thêm file config init.php, xóa phương thức load[] trong FT_Controller.php.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trước tiên bạn xem lại cấu trúc folder project của chúng ta.

Trong sơ đồ này ta có một file FT_Common.php , file này mục đích lưu trữ những hàm load hệ thống và trong bài này ta sẽ tìm hiểu nó.

1. Tạo config cho module

Trước tiên bạn cần tạo một folder config năm trong folder admin. Sau đó tạo một file init.php và dán nội dung sau vào:

Bài viết này được đăng tại [free tuts .net]

Chủ Đề