Heim Backend-Entwicklung PHP-Tutorial Eine kurze Einführung in die Verwendung der Autoloading-Klasse __autoload()

Eine kurze Einführung in die Verwendung der Autoloading-Klasse __autoload()

Jul 01, 2017 am 10:30 AM
autoload 加载 自动

面向对象编程中,都是以对象为单位的操作,如果我有两个不同的类,类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
Nach dem Login kopieren

两个类都在同一个文件,所有能运行成功,但现在大部分应用都分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);
    }
}
Nach dem Login kopieren

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

<?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;
Nach dem Login kopieren

 当你引用不存在的类时,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);
        }
}
Nach dem Login kopieren

 

<?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;
Nach dem Login kopieren

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

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

 

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in die Verwendung der Autoloading-Klasse __autoload(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Fehler beim Laden des Plugins in Illustrator [Behoben] Fehler beim Laden des Plugins in Illustrator [Behoben] Feb 19, 2024 pm 12:00 PM

Erscheint beim Starten von Adobe Illustrator eine Meldung über einen Fehler beim Laden des Plug-Ins? Bei einigen Illustrator-Benutzern ist dieser Fehler beim Öffnen der Anwendung aufgetreten. Der Meldung folgt eine Liste problematischer Plugins. Diese Fehlermeldung weist darauf hin, dass ein Problem mit dem installierten Plug-In vorliegt, es kann jedoch auch andere Gründe haben, beispielsweise eine beschädigte Visual C++-DLL-Datei oder eine beschädigte Einstellungsdatei. Wenn dieser Fehler auftritt, werden wir Sie in diesem Artikel bei der Behebung des Problems unterstützen. Lesen Sie daher weiter unten weiter. Fehler beim Laden des Plug-Ins in Illustrator Wenn Sie beim Versuch, Adobe Illustrator zu starten, die Fehlermeldung „Fehler beim Laden des Plug-Ins“ erhalten, können Sie Folgendes verwenden: Als Administrator

Stremio-Untertitel funktionieren nicht; Fehler beim Laden der Untertitel Stremio-Untertitel funktionieren nicht; Fehler beim Laden der Untertitel Feb 24, 2024 am 09:50 AM

Untertitel funktionieren bei Stremio auf Ihrem Windows-PC nicht? Einige Stremio-Benutzer berichteten, dass in den Videos keine Untertitel angezeigt wurden. Viele Benutzer berichteten, dass ihnen die Fehlermeldung „Fehler beim Laden der Untertitel“ angezeigt wurde. Hier ist die vollständige Fehlermeldung, die bei diesem Fehler angezeigt wird: Beim Laden der Untertitel ist ein Fehler aufgetreten. Untertitel konnten nicht geladen werden: Dies könnte ein Problem mit dem von Ihnen verwendeten Plugin oder Ihrem Netzwerk sein. Wie in der Fehlermeldung angegeben, könnte es Ihre Internetverbindung sein, die den Fehler verursacht. Überprüfen Sie daher bitte Ihre Netzwerkverbindung und stellen Sie sicher, dass Ihr Internet ordnungsgemäß funktioniert. Abgesehen davon könnte es auch andere Gründe für diesen Fehler geben, darunter ein widersprüchliches Untertitel-Add-on, nicht unterstützte Untertitel für bestimmte Videoinhalte und eine veraltete Stremio-App. wie

PHP implementiert das unendliche Scrollen PHP implementiert das unendliche Scrollen Jun 22, 2023 am 08:30 AM

Mit der Entwicklung des Internets müssen immer mehr Webseiten das Laden durch Scrollen unterstützen, und das Laden durch unendliches Scrollen ist eine davon. Dadurch kann die Seite kontinuierlich neue Inhalte laden, sodass Benutzer reibungsloser im Internet surfen können. In diesem Artikel stellen wir vor, wie man das Laden von unendlichem Scrollen mit PHP implementiert. 1. Was ist unendliches Scrollen? Infinite Scroll Loading ist eine Methode zum Laden von Webinhalten basierend auf Bildlaufleisten. Sein Prinzip besteht darin, dass, wenn der Benutzer zum Ende der Seite scrollt, Hintergrunddaten asynchron über AJAX abgerufen werden, um kontinuierlich neue Inhalte zu laden. Diese Art von Lademethode

Outlook friert beim Einfügen eines Hyperlinks ein Outlook friert beim Einfügen eines Hyperlinks ein Feb 19, 2024 pm 03:00 PM

Wenn beim Einfügen von Hyperlinks in Outlook Probleme beim Einfrieren auftreten, kann dies an instabilen Netzwerkverbindungen, alten Outlook-Versionen, Störungen durch Antivirensoftware oder Add-In-Konflikten liegen. Diese Faktoren können dazu führen, dass Outlook Hyperlink-Vorgänge nicht ordnungsgemäß verarbeitet. Beheben, dass Outlook beim Einfügen von Hyperlinks einfriert. Verwenden Sie die folgenden Korrekturen, um das Einfrieren von Outlook beim Einfügen von Hyperlinks zu beheben: Überprüfen Sie installierte Add-Ins. Aktualisieren Sie Outlook. Deaktivieren Sie vorübergehend Ihre Antivirensoftware und versuchen Sie dann, ein neues Benutzerprofil zu erstellen. Office-Apps reparieren. Programm deinstallieren und neu installieren. Los geht's. 1] Überprüfen Sie die installierten Add-Ins. Möglicherweise verursacht ein in Outlook installiertes Add-In das Problem.

Automatische Miniaturbildgenerierung mit JavaScript Automatische Miniaturbildgenerierung mit JavaScript Jun 16, 2023 pm 12:51 PM

Mit der Entwicklung des Internets sind Bilder zu einem unverzichtbaren Bestandteil von Webseiten geworden. Da jedoch die Anzahl der Bilder zunimmt, ist die Ladegeschwindigkeit von Bildern zu einem sehr wichtigen Thema geworden. Um dieses Problem zu lösen, verwenden viele Websites Miniaturansichten zum Anzeigen von Bildern. Um Miniaturansichten zu generieren, müssen wir jedoch professionelle Bildverarbeitungstools verwenden, was für einige Laien sehr problematisch ist. Dann ist die Verwendung von JavaScript zur automatischen Generierung von Miniaturansichten eine gute Wahl. So verwenden Sie JavaS

Automount-Laufwerke unter Linux Automount-Laufwerke unter Linux Mar 20, 2024 am 11:30 AM

Wenn Sie ein Linux-Betriebssystem verwenden und möchten, dass das System beim Booten automatisch ein Laufwerk einbindet, können Sie dies tun, indem Sie die eindeutige Kennung (UID) des Geräts und den Einhängepunktpfad zur fstab-Konfigurationsdatei hinzufügen. fstab ist eine Dateisystemtabellendatei, die sich im Verzeichnis /etc befindet. Sie enthält Informationen zu den Dateisystemen, die beim Systemstart gemountet werden müssen. Durch Bearbeiten der fstab-Datei können Sie sicherstellen, dass die erforderlichen Laufwerke bei jedem Systemstart korrekt geladen werden und so einen stabilen Betrieb des Systems gewährleisten. Die automatische Montage von Treibern kann in verschiedenen Situationen bequem eingesetzt werden. Ich habe beispielsweise vor, mein System auf einem externen Speichergerät zu sichern. Um eine Automatisierung zu erreichen, stellen Sie sicher, dass das Gerät auch beim Start mit dem System verbunden bleibt. Ebenso werden viele Anwendungen direkt

So lösen Sie das Problem, dass CSS nicht geladen werden kann So lösen Sie das Problem, dass CSS nicht geladen werden kann Oct 20, 2023 am 11:29 AM

Zu den Lösungen für das Problem, dass CSS nicht geladen werden kann, gehören die Überprüfung des Dateipfads, die Überprüfung des Dateiinhalts, das Löschen des Browser-Cache, die Überprüfung der Servereinstellungen, die Verwendung von Entwicklertools und die Überprüfung der Netzwerkverbindung. Detaillierte Einführung: 1. Überprüfen Sie zunächst den Pfad der CSS-Datei. Wenn sich die CSS-Datei in einem anderen Teil oder Unterverzeichnis der Website befindet, müssen Sie den richtigen Pfad angeben Die CSS-Datei befindet sich im Stammverzeichnis. 2. Überprüfen Sie den Dateiinhalt. Wenn der Pfad korrekt ist, liegt das Problem möglicherweise in der CSS-Datei usw.

Linux-Tipps: Brechen Sie die automatische Einrückung beim Einfügen in vim ab Linux-Tipps: Brechen Sie die automatische Einrückung beim Einfügen in vim ab Mar 07, 2024 am 08:30 AM

Vorwort: vim ist ein leistungsstarkes Textbearbeitungstool, das unter Linux sehr beliebt ist. Kürzlich stieß ich bei der Verwendung von vim auf einem anderen Server auf ein seltsames Problem: Als ich ein lokal geschriebenes Skript kopierte und in eine leere Datei auf dem Server einfügte, kam es zu einer automatischen Einrückung. Um ein einfaches Beispiel zu verwenden: Das Skript, das ich lokal geschrieben habe, lautet wie folgt: aaabbbcccddd Wenn ich den obigen Inhalt kopiere und in eine leere Datei auf dem Server einfüge, erhalte ich Folgendes: aabbbcccddd uns. Einrückung formatieren. Allerdings ist diese Automatik etwas unintelligent. Tragen Sie hier die Lösung ein. Lösung: Legen Sie die .vimrc-Konfigurationsdatei in unserem Home-Verzeichnis fest, neu

See all articles