Ý kiến học viên

Nguyễn Xuân Bách

Nguyễn Xuân Bách

Chất lượng giảng dạy rất tốt, Giảng viên nhiệt tình hướng dẫn ch...
  • - Phone : 0976256106
  • - Email : bachnx92@gmail.com
  • - Facebook : Xem
Phạm Đức Nam

Phạm Đức Nam

Chất lượng giảng dạy rất tốt, giảng viên nhiệt tình chỉ bảo.
  • - Phone : 01658977882
  • - Email : phamducnamhd292@gmai.com
  • - Facebook : Xem
Đặng Cao Sơn

Đặng Cao Sơn

Khóa học dễ hiểu, giảng viên nhiệt tình, nhiều tình bài tập tình huốn...
  • - Phone : 0938204886
  • - Email : soncshs1986@gmail.com
  • - Facebook : Xem
Viết đánh giá

Viết đánh giá

Về chất lượng đào tạo, website

Đánh giá của học viên

Ý kiến của học viên

Xem đánh giá của học viên về phpandmysql.net

PHP nâng cao - Lazy loading trong PHP

Lazy loading hay 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
Chẳng hạn trong file phpbasic.php bạn viết class phpbasic, nếu như thông thường khi bạn muốn dùng class phpbasic này thì bạn phải require hoặc include gọi file phpbasic.php vào để sử dụng

<?php
     require("phpbasic.php"); // gọi file 
     $php = new phpbasic(); // khởi tạo đối tượng
?>

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

- Class phpbasic trong file phpbasic.php

<?php
  class phpbasic{
 public function __construct(){
      echo "I'm phpbasic class";
 }
  }
?>

- Khởi tạo class phpbasic mà không cần gọi file

<?php
function __autoload($class){
     require($class.".php");
}
$php = new phpbasic();
?>

Ở ví dụ trên ta thấy hàm __autoload tự động gọi file phpbasic.php ra, chúng ta chỉ việc khởi tạo lại class basic

- Note : Chú ý khi sử dụng autoload thì tên file và tên class phải giống nhau nhé

Đó là autoload trong cùng một folder, vậy thì khi gọi một class trong một folder khác thì phải làm thế nào? ví dụ ta có một folder là models, trong folder có file user.php

File models/user.php

<?php
class user{
 public function __construct(){
     echo "I'm class user!";
 }
}

- Để sử dụng dc autoload cho trường hợp này ts cần phải đổi lại tên class sao cho phù hợp với đường dẫn đến file. Ở đây file user.php nằm trong thư mục models nên ta đổi tên class user thành class models_user

File user.php

<?php
class models_user{
 public function __construct(){
     echo "I'm class user!";
 }
}  

- Các bạn chú ý models_user là tên class và cũng chính là đường dẫn đến file user.php lúc này ta cần phải thêm một chút vào hàm _autoload, chúng ta sử dụng str_replace ký tự gạch dưới của models_user thành models/user

<?php
function __autoload($class){
 $class = str_replace("_","/",$class);
 require($class.".php");
}
$php = new models_user();
?>


- Lúc này khi ta khởi tạo lại lớp models_user thì nó sẽ tự gọi file user.php trong models ra, và đây là kết quả



Bạn có thể download xem ví dụ
Bạn vẫn chưa hiểu vấn đề, bạn cần người trợ giúp?. Hãy click vào đây để gửi câu hỏi, mọi người sẽ support cho bạn