Rumah pembangunan bahagian belakang tutorial php 简单介绍自动加载类__autoload()用法

简单介绍自动加载类__autoload()用法

Jul 01, 2017 am 10:30 AM
autoload memuatkan automatik

面向对象编程中,都是以对象为单位的操作,如果我有两个不同的类,类A和类B,在同一个文件里,实例化对象,就能在这个文件同时调用类A和类B的函数

<?php
#a.php

class A{
    public function funA()
    {
        echo &#39;The class:&#39;.class.&#39;<br/>';
    }
}

class B{
    public function funB()
    {
        echo 'The class:'.class.'<br/>';
    }
}
$a = new A();
$b = new B();
$a->funA(); //The class:A
$b->funB(); //The class:B
Salin selepas log masuk

两个类都在同一个文件,所有能运行成功,但现在大部分应用都分MVC,不同类专门处理特定的事物,比如C(Controller),只执行与事物有关的逻辑操作,这些文件很明显分属于不同目录下:

|—root

    |—controller

        |—controllerA.php

    |—model

       |—modelA.php

  |—view

        |—viewA.php

这时我要在modelA.php里怎么引用controllerA.php的函数呢?这就用到autoload()了。

<?php
#保存在MyClass.php

class MyClass {

    public function getNamespace()
    {
        return get_class($this);
    }
}
Salin selepas log masuk

现在我们在同级目录下引用这个类

<?php

function autoload($name)
{
    $file = realpath(DIR).&#39;/&#39;.$name.&#39;.php&#39;;
    if(file_exists($file))
        {
                require_once($file);
        if(class_exists($name,false))
                {
            return true;
                }
                return false;
          }
          return false;
}

$obj = new MyClass();
echo $obj->getNamespace();    //输出 MyClass;
Salin selepas log masuk

 当你引用不存在的类时,autoload就会被调用,并且你的类名会被作为参数传送过去(当你同时使用命名空间,包含命名空间部分会一起作为参数传送)。

下面我们把命名空间和自动加载类合并使用

命名空间,PHP从5.3开始支持命名空间(namespace),这个在C语言里非常常见,刚开始我不理解,直到我完整接触一个项目,需要加载在不同目录下Class时,恍然大悟。OK,下面讲一讲自己的理解吧。

用不同的命名空间区别相同的函数名,同时命名空间也可以作为引入类文件的路径。

(在WEB项目中,当在client输入一个url时,一般会有一个入口文件,在这个文件里解析你要调用的controller,以及传递的参数,然后动态的加载相应类文件,这其实就牵扯到一点路由规则,当然还有另外一种,在项目初始化之初就把所有类文件全部加载在内存中,这样,每次请求响应都不用再加载,常驻内存后响应要快点。)

<?php
#首先建立一个MyClass目录,在该目录下新MyClass.php文件,代码如下。

namespace MyClass;

class MyClass {

        public function getNamespace()
        {
                return get_class($this);
        }
}
Salin selepas log masuk

 

<?php
#在跟MyClass目录同级的目录下,新建一个文件,内容如下
function autoload($name)
{
    $class_path = str_replace('\\',DIRECTORY_SEPARATOR,$name);   //把表示命名空间的分割符号,转换成表示目录结构的斜线
    $file = realpath(DIR).'/'.$class_path.'.php';   
    if(file_exists($file))
        {
                require_once($file);    //引入文件
        if(class_exists($name,false))    //带有命名空间的类名
                {
            return true;
                }
                return false;
          }
          return false;
}
echo MyClass\MyClass::getNamespace();    //输出: MyClass\MyClass;
Salin selepas log masuk

这样非常容易避免了,当一个项目非常大时,不停的require文件。

让我们再思考,有没有更工程化的解决方案?当然有,我们可以建立自己的 Autoload 类,在这个类里面自动加载不同的类(可以包含命名空间),需要引用其他类的文件,只需要显示写入这个 Autoload 类即可。

 

Atas ialah kandungan terperinci 简单介绍自动加载类__autoload()用法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ralat memuatkan pemalam dalam Illustrator [Tetap] Ralat memuatkan pemalam dalam Illustrator [Tetap] Feb 19, 2024 pm 12:00 PM

Apabila memulakan Adobe Illustrator, adakah mesej tentang ralat memuatkan pemalam timbul? Sesetengah pengguna Illustrator telah mengalami ralat ini semasa membuka aplikasi. Mesej itu diikuti dengan senarai pemalam yang bermasalah. Mesej ralat ini menunjukkan bahawa terdapat masalah dengan pemalam yang dipasang, tetapi ia juga mungkin disebabkan oleh sebab lain seperti fail Visual C++ DLL yang rosak atau fail pilihan yang rosak. Jika anda menghadapi ralat ini, kami akan membimbing anda dalam artikel ini untuk menyelesaikan masalah, jadi teruskan membaca di bawah. Ralat memuatkan pemalam dalam Illustrator Jika anda menerima mesej ralat "Ralat memuatkan pemalam" semasa cuba melancarkan Adobe Illustrator, anda boleh menggunakan yang berikut: Sebagai pentadbir

Sari kata Stremio tidak berfungsi; ralat memuatkan sari kata Sari kata Stremio tidak berfungsi; ralat memuatkan sari kata Feb 24, 2024 am 09:50 AM

Sarikata tidak berfungsi pada Stremio pada PC Windows anda? Sesetengah pengguna Stremio melaporkan bahawa sari kata tidak dipaparkan dalam video. Ramai pengguna melaporkan mengalami mesej ralat yang mengatakan "Ralat memuatkan sari kata." Berikut ialah mesej ralat penuh yang muncul dengan ralat ini: Ralat berlaku semasa memuatkan sari kata Gagal memuatkan sari kata: Ini mungkin masalah dengan pemalam yang anda gunakan atau rangkaian anda. Seperti yang dikatakan oleh mesej ralat, mungkin sambungan internet anda yang menyebabkan ralat. Jadi sila semak sambungan rangkaian anda dan pastikan internet anda berfungsi dengan baik. Selain itu, mungkin terdapat sebab lain di sebalik ralat ini, termasuk sarikata yang bercanggah, sari kata yang tidak disokong untuk kandungan video tertentu dan apl Stremio yang sudah lapuk. suka

PHP melaksanakan pemuatan skrol tanpa had PHP melaksanakan pemuatan skrol tanpa had Jun 22, 2023 am 08:30 AM

Dengan perkembangan Internet, semakin banyak halaman web perlu menyokong pemuatan tatal, dan pemuatan tatal yang tidak terhingga adalah salah satu daripadanya. Ia membolehkan halaman memuatkan kandungan baharu secara berterusan, membolehkan pengguna menyemak imbas web dengan lebih lancar. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan pemuatan skrol tak terhingga menggunakan PHP. 1. Apakah pemuatan skrol tak terhingga? Pemuatan skrol tak terhingga ialah kaedah memuatkan kandungan web berdasarkan bar skrol. Prinsipnya ialah apabila pengguna menatal ke bahagian bawah halaman, data latar belakang diambil secara tak segerak melalui AJAX untuk memuatkan kandungan baharu secara berterusan. Kaedah pemuatan seperti ini

Outlook membeku apabila memasukkan hiperpautan Outlook membeku apabila memasukkan hiperpautan Feb 19, 2024 pm 03:00 PM

Jika anda menghadapi isu beku semasa memasukkan hiperpautan ke dalam Outlook, ia mungkin disebabkan oleh sambungan rangkaian yang tidak stabil, versi Outlook lama, gangguan daripada perisian antivirus atau konflik tambahan. Faktor-faktor ini boleh menyebabkan Outlook gagal mengendalikan operasi hiperpautan dengan betul. Betulkan Outlook terhenti apabila memasukkan hiperpautan Gunakan pembetulan berikut untuk membetulkan Outlook terhenti apabila memasukkan hiperpautan: Semak alat tambah yang dipasang Kemas kini Outlook Lumpuhkan sementara perisian antivirus anda dan kemudian cuba buat profil pengguna baharu Betulkan apl Office Program Nyahpasang dan pasang semula Office Mari mulakan. 1] Semak add-in yang dipasang Mungkin add-in yang dipasang dalam Outlook menyebabkan masalah.

Penjanaan lakaran kecil automatik menggunakan JavaScript Penjanaan lakaran kecil automatik menggunakan JavaScript Jun 16, 2023 pm 12:51 PM

Dengan perkembangan Internet, gambar telah menjadi bahagian yang sangat diperlukan dalam laman web. Tetapi apabila bilangan imej meningkat, kelajuan memuatkan imej telah menjadi isu yang sangat penting. Untuk menyelesaikan masalah ini, banyak tapak web menggunakan lakaran kecil untuk memaparkan imej, tetapi untuk menghasilkan lakaran kecil, kita perlu menggunakan alat pemprosesan imej profesional, yang merupakan perkara yang sangat menyusahkan bagi sesetengah orang bukan profesional. Kemudian, menggunakan JavaScript untuk mencapai penjanaan lakaran kecil automatik menjadi pilihan yang baik. Cara menggunakan JavaS

Petua Linux: Batalkan lekukan automatik apabila menampal dalam vim Petua Linux: Batalkan lekukan automatik apabila menampal dalam vim Mar 07, 2024 am 08:30 AM

Prakata: vim ialah alat penyuntingan teks yang berkuasa, yang sangat popular di Linux. Baru-baru ini, saya menghadapi masalah aneh apabila menggunakan vim pada pelayan lain: apabila saya menyalin dan menampal skrip bertulis tempatan ke dalam fail kosong pada pelayan, lekukan automatik berlaku. Untuk menggunakan contoh mudah, skrip yang saya tulis secara tempatan adalah seperti berikut: aaabbcccddd Apabila saya menyalin kandungan di atas dan menampalnya ke dalam fail kosong dalam pelayan, apa yang saya dapat ialah: aabbbcccddd Jelas sekali, ini adalah apa yang vim lakukan secara automatik kami. Walau bagaimanapun, automatik ini agak tidak pintar. Catat penyelesaiannya di sini. Penyelesaian: Tetapkan fail konfigurasi .vimrc dalam direktori rumah kami, baharu

Automount pemacu pada Linux Automount pemacu pada Linux Mar 20, 2024 am 11:30 AM

Jika anda menggunakan sistem pengendalian Linux dan mahu sistem memasang pemacu secara automatik semasa but, anda boleh melakukannya dengan menambahkan pengecam unik peranti (UID) dan laluan titik lekap pada fail konfigurasi fstab. fstab ialah fail jadual sistem fail yang terletak dalam direktori /etc Ia mengandungi maklumat tentang sistem fail yang perlu dipasang apabila sistem bermula. Dengan mengedit fail fstab, anda boleh memastikan pemacu yang diperlukan dimuatkan dengan betul setiap kali sistem dimulakan, sekali gus memastikan operasi sistem yang stabil. Memasang pemacu secara automatik boleh digunakan dengan mudah dalam pelbagai situasi. Sebagai contoh, saya merancang untuk menyandarkan sistem saya kepada peranti storan luaran. Untuk mencapai automasi, pastikan peranti kekal disambungkan ke sistem, walaupun pada permulaan. Begitu juga, banyak aplikasi akan secara langsung

Bagaimana untuk menyelesaikan masalah yang css tidak boleh dimuatkan Bagaimana untuk menyelesaikan masalah yang css tidak boleh dimuatkan Oct 20, 2023 am 11:29 AM

Penyelesaian kepada masalah yang CSS tidak boleh dimuatkan termasuk menyemak laluan fail, menyemak kandungan fail, mengosongkan cache penyemak imbas, menyemak tetapan pelayan, menggunakan alat pembangun dan menyemak sambungan rangkaian. Pengenalan terperinci: 1. Semak laluan fail Mula-mula, sila pastikan laluan fail CSS adalah betul. Jika fail CSS terletak di bahagian atau subdirektori laman web yang berbeza, anda perlu menyediakan laluan yang betul Fail CSS terletak dalam direktori akar, laluan harus terus ;

See all articles