Hàm __autoload trong PHP là gì ?

05/08/2022 - lượt xem
Chia sẻ
 
Rate this post

Hàm __autoload() trong PHP là một hàm được gọi khi khởi tạo một đối tượng không xác định.

Hàm này được sử dụng trên PHP5 và PHP7.

Cảnh báo

Trong phiên bản PHP 7.2 hàm này đã không còn được khuyên dùng nữa, thay vào đó hãy sử dụng hàm spl_autoload_register().

Cú pháp

Cú pháp hàm __autoload() trong PHP như sau:

__autoload ( string $class ) : void

Tham số truyền vào 

  • $class  là tên class muốn tải.

Giá trị trả về

Hàm này không có giá trị trả về

Ví dụ minh họa

function __autoload($className)
{
    echo 'Class name construct: ' . $className;
} 
 class Human
{
    public function __construct()
    {
        echo 'Class Human';
    }
}


$human = new Human();
//return Class Human

Với ví dụ trên bạn có thể thấy với class được định nghĩa rõ ràng thì hàm __autoload sẽ không được chạy. Vậy ở ví dụ 2 thì sao ?

function __autoload($className) 
{ 
echo 'Class name construct: ' . $className;
 }
} $human = new Human();
 //return Class name construct Human

Ở ví dụ 2 này bạn có thể thấy khi class không được định nghĩa rõ ràng thì hàm __autoload sẽ được chạy.

Ứng dụng

Bạn có thể sử dụng __autoload() include file class nhanh hơn đồng thời giúp code dễ đọc hơn.

********* TRƯỜNG HỢP BẠN SỬ DỤNG __autoload() *************
./myClass.php //Bạn định nghĩa một class myClass trong file myClass.php
<?php
class myClass {
    public function __construct() {
        echo "myClass init'ed successfuly!!!";
    }
}
?>

./index.php //File index để chạy chương trình chính
<?php
// Bạn định nghĩa lại class __autoload để include file
function __autoload($classname) {
    $filename "./"$classname .".php";
    include_once($filename);
}

// Khi đó bạn chỉ cần gọi khởi tạo class như bình thường
$obj = new myClass();
?>

********* TRƯỜNG HỢP BẠN KHÔNG SỬ DỤNG __autoload() *************

<?php
include_once("./myClass.php");
include_once("./myFoo.php");
include_once("./myBar.php");

$obj = new myClass();
$foo = new Foo();
$bar = new Bar();
?>

Ở ví dụ này cơ bản bạn đã hiểu cách sử dụng hàm __autoload(), code ngắn hơn dễ hiểu hơn.

Tuy nhiên ở từ phiên bản PHP 7.2 hàm __autoload() đã không còn được khuyến cáo sử dụng nữa, vì vậy bạn có thể sử dụng hàm sau spl_autoload_register() để thay thế.

<?php
    if(!function_exists('classAutoLoader')){
        function classAutoLoader($class){
            $class=strtolower($class);
            $classFile=$_SERVER['DOCUMENT_ROOT'].'/include/class/'.$class.'.class.php';
            if(is_file($classFile)&&!class_exists($class)) include $classFile;
        }
    }
    spl_autoload_register('classAutoLoader');
?>

Các hàm liên quan

  • Hàm spl_autoload_register() một hàm thay thế cho hàm __autoload().

Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm __autoload() trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé.

Cảm ơn bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm