Bài 10: Kỹ thuật Lazy loading.

PHP nâng cao 01/02/2017 07:00 1132
Lazy loading là kỹ thuật rất quan trọng trong lập trình hướng đối tượng.Nó còn gọi là autoload trong PHP, khi bạn khai báo hàm autoload này thì bạn chỉ việc gọi class mà không cần phải gọi file
Nhờ có nó ta có thể tiết kiệm được rất nhiều thao tác gọi nạp file khi sử dụng. Bản thân lazy loading sử dụng phương thức magic để 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ý do đó mà chúng ta sử dụng nó để require() một file chứa lớp đó.
Mình có một cấu trúc sau:
Class User
class User{
	function User(){
		echo 'User đã được khởi tạo';	
	}
}

Class Product.

class Product{
	function Product(){
		echo 'Product đã được khởi tạo';	
	}
}
Chẳng hạn trong file index.php bạn khai báo một đối tượng và gọi tới các thuộc tính và phương thức trong UserProduct, nếu như thông thường khi bạn muốn dùng class này này thì bạn phải require hoặc include gọi file index.php vào để sử dụng.
- Code trong file index.php
define('ABSPATH',dirname(__FILE__)); // Khai báo thư mục chứa file thực hiện
define('DIR_CLASSES',ABSPATH.'/classes'); // Khai báo đường dẫn tới folder classes

// Require files
require_once(DIR_CLASSES.'/User.php');
require_once(DIR_CLASSES.'/Product.php');

// Khởi tạo đối tượng User
$user = new User(); // Kết quả: User đã được khởi tạo

// Khởi tạo đối tượng Product
$product = new Product(); // Kết quả: Product đã được khởi tạo
Nhưng khi bạn khai báo hàm __autoload, thì bạn chỉ việc khởi tạo đối tượng mà không cần require file nữa vì hàm _autoload đã tự động gọi cho bạn. - Code trong file index.php
define('ABSPATH',dirname(__FILE__)); // Khai báo thư mục chứa file thực hiện
define('DIR_CLASSES',ABSPATH.'/classes'); // Khai báo đường dẫn tới folder classes

function __autoload($class){
     require(DIR_CLASSES.'/'.$class.".php");
}

// Khởi tạo đối tượng User
$user = new User(); // Kết quả: User đã được khởi tạo

// Khởi tạo đối tượng Product
$product = new Product(); // Kết quả: Product đã được khởi tạo
Ở ví dụ trên ta thấy hàm __autoload tự động gọi file User.phpProduct.php ra, chúng ta chỉ việc khởi tạo lại class basic
Chú ý khi sử dụng autoload thì tên file và tên class phải giống nhau nhé

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.