cari
Rumahphp教程php手册php面向对象__call处理错误调用技巧

php面向对象__call处理错误调用技巧

Jun 13, 2016 am 09:51 AM
cphpsatu kalimemperkenalkankira-kirawujudberurusan denganobjekKemahiranartikelpanggilankesilapanUntuk

本文章来给大家介绍一下关于在php面向对象__call处理错误调用技巧吧,call在以前很少用,今天就来给大家测试一下。


在提到__call之前,先来看一个实例的测试结果,以便更好地去了解__call方法的作用。上代码:

在调用对象中不存在的方法时就会出现系统报错,然后程序退出不能继续执行。如果在类中添加一个“魔术”方法__call(),则调用对象中不存在的方法时就会自动调用该方法,并且程序可以继续向下执行。可以通过在__call()方法中的设置,提示用户调用的方法及需要的参数列表内容不存在。__call()方法需要两个参数,第一个参数是调用不存在的方法时,接受这个不存在的方法的方法名,并将这个不存在的方法中,使用的参数列表形成数组传给__call()方法中的第二个参数。

代码

 代码如下 复制代码

 

    //这是一个测试的类,里面没有属性和方法
    class Test
    {
    }


    //产生一个Test类的对象

    $test=new Test();


    //调用对象里不存在的方法

    $test->demo("one", "two", "three");


    //程序不会执行到这里

    echo "this is a test
";


?>

运行结果:Fatal error: Call to undefined method Test::demo()

我们知道,程序的运行结果抛出了错误提示,在运行的过程中抛出错误后就已经中断了,以致”$Person->say();“这个正确的方法也不能再继续运行。看一下上面的代码就知道,Person类并没有代码错误,错就错在实例化Person类的过程中调用了Person类中并不存在的方法,如run()和eat()。

  在程序的运行中,出现如上抛出的的错误是致命性的,整个程序将崩溃。为了处理这种错误的同时让程序继续执行,我们可以在类中添加一个魔术方法__call,来调用对象中不存在的方法时自动调用该方法,并且使程序可以继续向下执行。

下面将在上面的代码的基础上多添加一个__call方法并调试,代码如下:
代码

 代码如下 复制代码

 

    //这是一个测试的类,里面没有属性和方法
    class Test
    {

        //调用不存的方法时自动调用的方法,第一个参数为方法名,第二个参数是数组参数

        function __call($function_name, $args)
        { 

            print "你所调用的函数:$function_name(参数:"; 

            print_r($args); 

            echo "不存在!
n";

        }

    }


    //产生一个Test类的对象

    $test=new Test();


    //调用对象里不存在的方法

    $test->demo("one", "two", "three");


    //程序不会退出可以执行到这里

    echo "this is a test
";

?>

运行结果:

你所调用的函数:run(参数:Array ( [0] => teacher ) )不存在!

你所调用的函数:eat(参数:Array ( [0] => child [1] => apple ) )不存在!

Hello, wblog!

这次程序的运行结果不再抛出致命性错误,在调用不存在的方法时自动调用了__call方法捕捉处理不存在的方法并提示给用户,而调用存在的方法时程序正常执行。


总结:在类中添加一个魔术方法__call,在调用对象中不存在的方法时就会自动调用该方法,并且程序可以继续向下执行。

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!