01/10/2018, 15:38

Magic method trong php?

cho mình hỏi cái method magic __call() trong php có tác dụng gì vậy , mình đọc qua thấy nó hơi mông lung vì theo ngày xưa mình học OOP thì 1 đối tượng chính là sự đóng gói của dữ liệu và hành vi tác động lên dữ liệu đó , nhưng ở đây lại xuất hiện cái method magic giúp gọi đến method mà chưa được hoặc không được phép truy cập vậy tác dụng của nó là gì ???
mình đọc bài viết này : https://viblo.asia/p/php-magic-methods-la-gi-PaLkDymdvlX

thấy tự nhiên dùng 1 đối tượng obj1 gọi đến 1 method của class khác mình thấy nó phản lại quy tắc của OOP quá…

Quân viết 17:44 ngày 01/10/2018

Php không có thuần OOP mà cũng là một nồi lẩu thập cẩm tương tự JS, nên cũng có nhiều cái hoàn toàn không tuân theo OOP. Về tác dụng của magic method __call cho phép bạn tạo object có thể call method dynamic, call method by name

AlexT viết 17:46 ngày 01/10/2018

cảm ơn bạn … hix mới từ java nhảy qua đây thấy nó viết tum lum quá , nhiều khi thấy nó thêm properties vào 1 object ngay tại runtime nữa @@

Hung viết 17:52 ngày 01/10/2018

“__call() is triggered when invoking inaccessible methods in an object context.”

<?php
class MethodTest
{
    public function __call($name, $arguments)
    {
        // Note: value of $name is case sensitive.
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "\n";
    }
}

$obj = new MethodTest;
$obj->runTest('in object context');
?>
Calling object method 'runTest' in object context

http://php.net/manual/en/language.oop5.overloading.php#object.call

Hung viết 17:46 ngày 01/10/2018

Viết web không thì ít dùng lắm.
Nhưng nếu em viết framework thì sẽ dùng một số magic method để implement.

Bài liên quan
0