Lazy loading là kỹ thuật rất quan trọng trong lập trình hướng đối tượng. Vì nhờ có nó ta có xác xuất kiệm ước được dồi dào thao tác gọi nạp file khi sử dụng. Bản thân lazy loading sử dụng magic method ( các phương thức đặc biệt trong hoc PHP can ban) để triệu gọi dữ liệu. Cụ thể là phương thức __autoload( ).

Phương thức này sẽ được tự động gọi khi một đối tượng được khởi tạo. Cũng vì lý "một năm do đó nó sẽ bị lãng quên" mà chúng ta sử dụng nó để require( ) một file chứa lớp đó.

Ví dụ:
Tạo 1 file tên test.php với nội dung sau:

function __autoload( $url )
require( "$url.php" );

$abc=new ABC;
$abc->demo( );
?>
function __autoload( $url )
require( "$url.php" );

$abc=new ABC;
$abc->demo( );
?>
tiếp chuyện ta tạo 1 file tên ABC.php với nội dung sau:

class ABC
public function demo( )
echo "
Welcome to QHOnline Tutorial
";


class ABC
public function demo( )
echo "
Welcome to QHOnline Tutorial

";



Khi chạy file test.php thì Cuối cùng sẽ hiển thị trên màn hình là:
Welcome to QHOnline Tutorial
rỏ rành trên file test.php của chúng ta ở trên không hề có class nào tên ABC và cũng không có phương thức nào tên là demo( ) cả. Vậy thì tại sao ta có thể gọi được chúng ra bên ngoài ?.

bởi vì khi ta khởi tạo lớp ABC , lập khắc sẽ gọi autoload( ). Và phương thức autoload( ) sẽ lấy tên lớp ABC như 1 tham số $url và dùng lệnh require( ) để nạp file tên ABC.php vào.

Khi đó , file ABC.php của chúng tôi có lớp tên ABC và cũng có phương thức tên demo( ) nên file test.php của chúng tôi mới xuất giá trị của phương thức demo( ) ra bên ngoài được.
Xem thêm tài liệu học php : học php nâng cao
Mọi người thấy đấy , thay vì trước khi sử dụng 1 lớp ta phải require( ) các lớp ở trên đầu rất nhiều. Giết thì giờ đây với lazy loading ta chỉ việc gọi lớp thì tự động hệ thống sẽ nạp file tương ứng tên lớp đó. Điều này giúp ta bớt nhiều thời gian và giảm hao tốn tài nguyên khi phải thực hành việc nạp load các thư viện ở trên đầu các file rất nhiều.

Tuy nhiên , cần lưu tuy là. Khi sử dụng cơ chế này , thường ta phải để ý tới tên lớp và tên file. Chúng cần phải có sự liên hệ nhất quyết. Ví dụ: Tên lớp và tên file Đồng dạng. Vì nếu không Đồng dạng thì quá trình nạp load sẽ thất bại. Và dĩ nhiên ta chẳng thể lấy được các lớp , phương thức như mong muốn.

Kỹ thuật lazy loadingcũng là kỹ thuật được sử dụng rất nhiều trong các hoc PHP co ban Framework ngày nay. Chẳng hạn như zend framework , khi bạn muốn gọi 1 lớp thường thì sẽ gọi như sau:
$model=new Zend_Db_Table_Abstract;
$model=new Zend_Db_Table_Abstract;
Có tức là bạn đang truy cập vào thư mục Zend vào tiếp thư mục Db , vào tiếp thư mục Table và vào file Abstract.php. Zend/Db/Table/Abstract.php.
Và tất nhiên trong file Abstract.php phải có lớp tên là Zend_Db_Table_Abstract:
class Zend_Db_Table_Abstract
//code ở đây

class Zend_Db_Table_Abstract
//code ở đây


Để autoload hiểu điều đó ta có thể định nghĩa đơn giản như sau:

function __autoload( $url )
$url=str_replace( "_" , "/" , $url );
require( "$url.php" );

function __autoload( $url )
$url=str_replace( "_" , "/" , $url );
require( "$url.php" );


Như bạn thấy , ta lùng tất cả các dấu gạch dưới trong lớp và thay thế chúng bằng dấu “/”. Khi đó hệ thống giao thông sẽ nạp đúng như quy trình trên.