PHP自动加载机制介绍——spl_autoload_register()函数,php类自动加载
* include 和 require 功能是一样的,它们的不同在于 include 出错时只会产生警告,而 require 会抛出错误终止脚本。
* include_once 和 include 唯一的区别在于 include_once 会检查文件是否已经引入,如果是则不会重复引入。
spl_autoload_register() 函数是实现自动加载未定义类功能的的重要方法,所谓的自动加载意思就是 我们的new 一个类的时候必须先include或者require的类文件,如果没有include或者require,则会报错。那这样我们就必须在文件头部写上许多include或require文件,非常麻烦,
为了使得没有include或者require类的时候也正常new一个类,所以有了自动加载的概念,也就是说new一个类之前不用事先包含类文件也可以正常new,这样我们的文件头部就不用包含许多include(require)。其实这算一种封装!
用spl_autoload_register函数可以实现上面说的功能,我们来看看实现原理。
这个函数的参数如下:
第一个参数:autoload_function
这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要new 的类文件包含include(requeire)进来,这样new的时候就不会找不到文件了。其实就是封装整个项目的include和require功能。
第二个参数:throw
此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。
第三个参数:prepend
如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。
当我们new一个类,并且这个类文件没有被包含时候就会执行这个autoload_function方法
先来看一个错误例子:+++++++++++++++++++++
<?php //当我们直接new一个未包含class类文件时候会报错 $objDemo = new AutoloadClass();
正确的使用 spl_autoload_register() 函数
通过下面例子我们可以看到,当new一个未包含的类时候,会去执行spl_autoload_register第一个参数函数名的函数,这个函数有一个参数就是需要new的类名,这个函数的功能就是把这个类给包含进来(类名和文件名一致),这样就实现了自动加载功能。原理就是这样,不是很复杂。
<?php // 定义工具类在服务器位置 常量 define('TOOLS_ROOT', __DIR__ . '/'); //文件 autoloadClass.php ,需要new的文件 class AutoloadClass{ public function __construct() { // echo '你已经包含我了'; } } //文件autoloadDemo.php文件 spl_autoload_register('myAutoLoad', true, true); function myAutoLoad($className){ $classFileName = TOOLS_ROOT."{$className}.php"; include $classFileName; }
另外,我们可以改为匿名函数来实现:
<?php // 定义工具类在服务器位置 常量 define('TOOLS_ROOT', __DIR__ . '/'); //文件 autoloadClass.php ,需要new的文件 class AutoloadClass{ public function __construct() { // echo '你已经包含我了'; } } spl_autoload_register(function ($className) { $classFileName = TOOLS_ROOT."{$className}.php"; include $classFileName; }, true, true); $objDemo = new AutoloadClass();
更多PHP相关知识,请访问PHP中文网!
Atas ialah kandungan terperinci PHP自动加载机制介绍——spl_autoload_register()函数,php类自动加载. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





Penamaan konvensyen dalam PHP: Cara menggunakan notasi camelCase untuk menamakan kelas, kaedah dan pembolehubah Dalam pengaturcaraan PHP, konvensyen penamaan yang baik ialah amalan pengekodan yang penting. Ia meningkatkan kebolehbacaan dan kebolehselenggaraan kod, serta menjadikan kerja berpasukan lebih lancar. Dalam artikel ini, kami akan meneroka konvensyen penamaan biasa: camelCase dan memberikan beberapa contoh cara menggunakannya dalam PHP untuk menamakan kelas, kaedah dan pembolehubah. 1. Apakah tatanama kes unta? CamelCase ialah konvensyen penamaan biasa di mana huruf pertama setiap perkataan ditulis dengan huruf besar,

Ralat PHP: Tidak dapat mengisytiharkan kelas berulang kali, penyelesaian! Adalah perkara biasa bagi pembangun menghadapi masalah. Dalam pembangunan PHP, kita sering menghadapi ralat biasa: kelas tidak boleh diisytiharkan berulang kali. Masalah ini kelihatan mudah, tetapi jika tidak diselesaikan dalam masa, kod tidak akan dilaksanakan dengan betul. Artikel ini akan memperkenalkan punca masalah ini dan memberikan penyelesaian untuk rujukan anda. Apabila kami mentakrifkan kelas dalam kod PHP, jika kelas yang sama ditakrifkan beberapa kali dalam fail yang sama atau berbilang fail, ralat yang kelas tidak boleh diisytiharkan berulang kali akan berlaku. ini adalah

Teknologi enkapsulasi dan enkapsulasi aplikasi dalam PHP ialah konsep penting dalam pengaturcaraan berorientasikan objek Ia merujuk kepada merangkum data dan operasi pada data bersama-sama untuk menyediakan antara muka akses bersatu kepada program luaran. Dalam PHP, enkapsulasi boleh dicapai melalui pengubahsuai kawalan akses dan definisi kelas. Artikel ini akan memperkenalkan teknologi enkapsulasi dalam PHP dan senario aplikasinya, dan menyediakan beberapa contoh kod khusus. 1. Pengubah suai kawalan capaian berkapsul Dalam PHP, pengkapsulan dicapai terutamanya melalui pengubahsuai kawalan capaian. PHP menyediakan tiga pengubah kawalan akses,

Apakah pengaturcaraan berorientasikan objek? Pengaturcaraan berorientasikan objek (OOP) ialah paradigma pengaturcaraan yang mengabstrak entiti dunia sebenar ke dalam kelas dan menggunakan objek untuk mewakili entiti ini. Kelas mentakrifkan sifat dan tingkah laku objek, dan objek memberi contoh kelas. Kelebihan utama OOP ialah ia menjadikan kod lebih mudah difahami, diselenggara dan digunakan semula. Konsep Asas OOP Konsep utama OOP termasuk kelas, objek, sifat dan kaedah. Kelas ialah pelan tindakan sesuatu objek, yang mentakrifkan sifat dan kelakuannya. Objek ialah contoh kelas dan mempunyai semua sifat dan tingkah laku kelas. Sifat ialah ciri-ciri objek yang boleh menyimpan data. Kaedah ialah fungsi objek yang boleh beroperasi pada data objek. Kelebihan OOP Kelebihan utama OOP termasuk: Kebolehgunaan semula: OOP boleh menjadikan kod lebih banyak

Semasa proses pembangunan Java, kadangkala anda akan menghadapi ralat: java.lang.ClassNotFoundException. Ia mengatakan bahawa fail kelas yang diperlukan tidak boleh ditemui dalam Mesin Maya Java (JVM). Ralat ini akan menyebabkan program tidak berjalan dengan betul, dan jika tidak diselesaikan dalam masa, akan melambatkan kemajuan pembangunan. Artikel ini akan memperkenalkan sebab dan penyelesaian untuk kelas yang tidak ditemui dalam Java. 1. Sebab 1. Laluan kelas adalah salah Dalam Java, laluan pakej dan laluan kelas adalah sangat penting. Jika classpath ditetapkan dengan salah atau fail kelas

Apabila bahasa PHP menjadi semakin popular, pembangun perlu menggunakan lebih banyak kelas dan fungsi. Apabila projek berkembang dalam saiz, memperkenalkan semua kebergantungan secara manual menjadi tidak praktikal. Pada masa ini, mekanisme pemuatan automatik diperlukan untuk memudahkan proses pembangunan dan penyelenggaraan kod. Mekanisme pemuatan automatik ialah ciri bahasa PHP yang boleh memuatkan kelas dan antara muka yang diperlukan secara automatik pada masa jalan dan mengurangkan pengenalan fail kelas manual. Dengan cara ini, pengaturcara boleh menumpukan pada membangunkan kod dan mengurangkan ralat dan pembaziran masa yang disebabkan oleh pengenalan kelas manual yang membosankan. Dalam PHP, secara amnya

Bagaimana untuk menggunakan Atribut untuk menambah anotasi tersuai pada kelas dalam PHP8? Anotasi tersuai ialah cara untuk menambahkan metadata pada kelas atau kaedah, yang boleh membantu kami mendapatkan dan memproses maklumat tambahan pada kelas atau kaedah tertentu pada masa jalan. Dalam PHP8, konsep Atribut telah diperkenalkan, yang membolehkan kami menambah anotasi tersuai pada kelas dengan mudah. Artikel ini akan memperkenalkan cara menggunakan Atribut untuk melaksanakan anotasi tersuai untuk kelas dalam PHP8 dan menyediakan contoh kod khusus. Dalam PHP8, sejak

Kemahiran enkapsulasi kod PHP: Cara menggunakan kelas dan objek untuk merangkum blok kod boleh guna semula Ringkasan: Semasa pembangunan, kita sering menghadapi blok kod yang perlu digunakan semula. Untuk meningkatkan kebolehselenggaraan dan kebolehgunaan semula kod, kita boleh menggunakan teknik pengkapsulan kelas dan objek untuk merangkum blok kod ini. Artikel ini menerangkan cara menggunakan kelas dan objek untuk merangkum blok kod yang boleh digunakan semula dan menyediakan beberapa contoh kod konkrit. Kelebihan menggunakan kelas dan objek untuk merangkum Menggunakan kelas dan objek untuk merangkum mempunyai kelebihan berikut: 1.1 Meningkatkan kebolehselenggaraan kod dengan mengurangkan pertindihan.
