2011-01-04 41 views

Trả lời

6

Một vài điểm trên tự động load:

  1. Bạn sẽ thấy một màn trình diễn đẹp cải thiện bằng cách sử dụng tự động load so với lúc nào cũng bao gồm tất cả các tập tin của bạn tất cả các thời gian (đặc biệt là khi số lượng tập tin phát triển lớn hơn và lớn hơn).

  2. Khi thực hiện tự động load, nó là tốt hơn để sử dụng spl_autoload_register() hơn __autoload().

Mặc dù rất nhiều lần khi người ta nói về tải lười biếng trong PHP, họ đang nói về cái gì đó như sau:

class Foo { 
    protected $bar = null; 

    public function getBar() { 
     if ($this->bar == null) { 
      $this->bar = ExpensiveOperation(); 
     } 
     return $this->bar; 
    } 
} 

Sau đó, bạn chỉ tải một tài sản khi nó thực sự cần phải được sử dụng và không phải mỗi khi bạn khởi tạo đối tượng, có khả năng có một số lợi ích tốt.

+5

+1 cho spl_autoload_register() –

2

Bạn có thể sử dụng rõ ràng bao gồm hoặc để __autoload() tìm lớp học cho bạn. Dù bằng cách nào.

Tôi không khuyên bạn nên pha trộn hai chiến lược. Các dòng include sẽ không cần thiết.

3

Một lợi ích của trình tải chậm là nó chỉ tải các tệp lớp thực sự cần thiết bởi tập lệnh trong quá trình thực thi, có khả năng tiết kiệm bộ nhớ; nếu không, bạn có thể bao gồm tất cả các tệp lớp, cho dù chúng có cần thiết hay không. Tùy thuộc vào tập lệnh của bạn, điều này có thể tạo nên sự khác biệt.

+0

Chắc chắn đây là ** lợi ích ** của trình tải lười biếng? –

+0

@Will - Không cần danh sách dài bao gồm sẽ là lợi ích lớn khác, và phải thêm vào danh sách bất cứ khi nào bạn thêm một lớp mới, là một lợi ích thứ cấp; nhưng bộ nhớ/cải thiện hiệu suất chắc chắn là lợi ích chính. Đồng thời, tránh chi phí của include_once, trong khi không phải lo lắng về việc sao chép bao gồm –

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