Rumah >pembangunan bahagian belakang >tutorial php >Ringkaskan dan susun kaedah sihir dalam php

Ringkaskan dan susun kaedah sihir dalam php

WBOY
WBOYke hadapan
2022-04-15 12:50:225317semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang PHP, yang terutamanya memperkenalkan isu berkaitan tentang kaedah sihir, dan meringkaskan kaedah termasuk __kaedah pembinaan, __kaedah pemusnahan dan __kaedah pengklonan, saya harap ia membantu semua orang.

Ringkaskan dan susun kaedah sihir dalam php

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Penjelasan terperinci kaedah sihir dalam php, dalam php Terdapat satu jenis kaedah yang sangat pelik iaitu selagi syarat tertentu dipenuhi, ia akan dilaksanakan dengan sendirinya iaitu kaedah ajaib dalam php,

1. __bina kaedah pembinaan

  • Ia akan dipanggil apabila kelas dijadikan instantiated
  • Ringkasnya, apabila kelas baharu dicipta, kaedah ini akan dilaksanakan secara automatik
<?php
class autofelix 
{
    public function __construct()
    {
        echo &#39;我是类autofelix&#39;;
    }
}

new autofelix();

//即可输出:我是类autofelix

2. Kaedah __destruct destructor

  • Ia dicetuskan secara automatik apabila kelas dimusnahkan
  • Anda boleh menggunakan unset kaedah untuk mencetuskan kaedah ini
<?php
class autofelix 
{
    public function __destruct()
    {
        echo &#39;我准备销毁你了&#39;;
    }
}

$a = new autofelix();
unset($a);

//即可输出:我准备销毁你了

3. __kaedah pengklonan klon

  • Ia akan dipanggil secara automatik apabila kelas diklonkan
<?php
class autofelix 
{
    public function __clone()
    {
        echo &#39;我克隆了你&#39;;
    }
}

$a = new autofelix();
clone $a;

//即可输出:我克隆了你

4. __panggilan bukan kaedah panggilan Statik

  • Apabila kaedah untuk dipanggil tidak wujud atau kebenaran tidak mencukupi, ia akan menjadi dipanggil secara automatik
  • Sebagai contoh, jika saya memanggil kaedah peribadi yang diubah suai di dalam kelas dari luar kelas
<?php
class autofelix 
{
    private function say() 
    {
        echo &#39;hello, 我是autofelix&#39;;
    }

    public function __call($name, $arguments)
    {
        echo &#39;你无权调用&#39; . $name . &#39;方法&#39;;
        die;
    }
}

$a = new autofelix();
$a->say(); //按理说应该报错

//即可输出:你无权调用say方法

5 🎜>

Akan dipanggil secara automatik apabila kaedah statik yang akan dipanggil tidak wujud atau mempunyai kebenaran yang tidak mencukupi
  • Sebagai contoh, saya memanggil kaedah statik diubah suai persendirian di dalam kelas dari luar kelas
<?php
class autofelix 
{
    private static function say() 
    {
        echo &#39;hello, 我是autofelix&#39;;
    }

    public function __callStatic($name, $arguments)
    {
        echo &#39;你无权调用&#39; . $name . &#39;方法&#39;;
        die;
    }
}

$a = new autofelix();
$a::say(); //按理说应该报错

//即可输出:你无权调用say方法
6. __debugInfo kaedah pencetakan

Kaedah ini akan dipanggil apabila objek kelas var_dump()
  • Jika ini kaedah tidak ditakrifkan, var_dump() akan mencetak semua atribut kelas
<?php
class autofelix 
{
    public function __debugInfo()
    {
        echo &#39;你看不到我任何信息的~&#39;;
    }
}

var_dump(new autofelix());

//即可输出:你看不到我任何信息的~
7. __dapatkan kaedah untuk mendapatkan atribut ahli

Melalui ia, atribut ahli persendirian boleh diperolehi di luar objek
<?php
class autofelix 
{
    private $name = &#39;autofelix&#39;;

    public function __get($name)
    {
        if(in_array($name, [&#39;name&#39;, &#39;age&#39;])) {
           echo $this->name;
        } else {
            echo '不是什么东西都能访问的~';
        }
    }
}

$a = new autofelix();
$a->name;

//即可输出:autofelix
8. __kaedah isset

Apabila isset() atau kosong() dipanggil pada harta yang tidak boleh diakses, ia akan dipanggil secara automatik
<?php
class autofelix 
{
    private $name = &#39;autofelix&#39;;

    public function __isset($name)
    {
        if(in_array($name, [&#39;name&#39;, &#39;age&#39;])) {
           echo $this->name;
        } else {
            echo '不是什么东西都能访问的~';
        }
    }
}

$a = new autofelix();
isset($a->name);

//结果: autofelix
9 __kaedah ditetapkan

Ia akan dicetuskan apabila menetapkan a. nilai kepada harta yang tidak ditentukan
<?php
class autofelix 
{
    public function __set($name, $value)
    {
        echo &#39;你想给&#39; . $name . &#39;赋值&#39; . $value;
    }
}

$a = new autofelix();
$a->name = 'autofelix';

//结果: 你想给name赋值autofelix;
10 __kaedah invoke

Objek itu sendiri tidak boleh digunakan secara langsung sebagai fungsi
    <.>Jika objek dipanggil sebagai fungsi, kaedah ini akan dicetuskan
11 __kaedah tidur
<?php
class autofelix 
{
    public function __invoke()
    {
        echo &#39;你还想调用我?&#39;;
    }
}

$a = new autofelix();

//对象直接当函数调用
$a();

//结果: 你还想调用我?

Akan secara automatik. dipanggil apabila serialize() dipanggil di luar kelas

12 __toString method
<?php
class autofelix 
{
    public function __sleep()
    {
        echo &#39;弄啥嘞~&#39;;
    }
}

$a = new autofelix();

serialize($a);

//结果: 弄啥嘞~

Apa yang perlu dikembalikan apabila kelas dirawat. sebagai rentetan

    Jenis rentetan mesti dikembalikan di sini, jika tidak, ralat maut akan dilaporkan
13 __kaedah tidak ditetapkan
<?php
class autofelix 
{
    public function __toString()
    {
        return &#39;我是你得不到的对象...&#39;;
    }
}

$a = new autofelix();
echo $a;

//结果: 我是你得不到的对象...

akan dipanggil secara automatik apabila unset() dipanggil pada harta yang tidak boleh diakses

10 4. Kaedah __wakeup
<?php
class autofelix 
{
    private $name = &#39;autofelix&#39;;

    public function __unset($name)
    {
        echo &#39;想删我? 你也配?&#39;;
    }
}

$a = new autofelix();
unset($a->name);

//结果: 想删我? 你也配?

akan dipanggil secara automatik apabila kaedah unserialize() dilaksanakan

  • Pembelajaran yang disyorkan: "
Tutorial Video PHP
<?php
class autofelix 
{
    public function __wakeup()
    {
        echo '又想弄啥嘞~';
    }
}

$a = new autofelix();

unserialize($a);

//结果: 又想弄啥嘞~

Atas ialah kandungan terperinci Ringkaskan dan susun kaedah sihir dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam