Heim  >  Artikel  >  PHP-Framework  >  Analyse von Bibliothekserweiterungsvorgängen wie der Thinkphp-Framework-Erweiterung

Analyse von Bibliothekserweiterungsvorgängen wie der Thinkphp-Framework-Erweiterung

coldplay.xixi
coldplay.xixinach vorne
2020-06-09 11:43:522878Durchsuche

Analyse von Bibliothekserweiterungsvorgängen wie der Thinkphp-Framework-Erweiterung

Detaillierte Erläuterung von Bibliothekserweiterungsvorgängen wie der Thinkphp-Framework-Erweiterung

Dieser Artikel hauptsächlich Einführung in die Thinkphp-Framework-Erweiterung und andere Vorgänge zur Erweiterung der Klassenbibliothek und Analyse der relevanten Prinzipien, Implementierungsmethoden und Betriebsvorkehrungen der Thinkphp-Klassenbibliothekserweiterung in Form von Beispielen. Freunde in Not können sich auf die Beispiele in diesem Artikel beziehen

Beschreibt Bibliothekserweiterungsvorgänge wie die Thinkphp-Framework-Erweiterung. Geben Sie es wie folgt als Referenz für alle frei:

Bibliotheksklassenerweiterung

Die Klassenbibliothek von ThinkPHP umfasst hauptsächlich öffentliche Klassenbibliotheken und Anwendungsklassenbibliotheken, die alle auf definierten Namespaces basieren und erweitert. Solange es gemäß der Spezifikation definiert ist, kann ein automatisches Laden erreicht werden.

Öffentliche Bibliotheksklassen

Öffentliche Klassenbibliotheken beziehen sich normalerweise auf die Klassenbibliotheken im ThinkPHP/Library-Verzeichnis, zum Beispiel:

Think Verzeichnis: Systemkernklassenbibliothek
Org-Verzeichnis: Öffentliche Klassenbibliothek eines Drittanbieters

Die Klassenbibliotheken in diesen Verzeichnissen können automatisch geladen werden. Sie müssen nur die entsprechende Klassenbibliothek in das Verzeichnis einfügen , und fügen Sie dann die Namespace-Definition hinzu oder ändern Sie sie. Sie können eine Image.class.php-Datei im Verzeichnis Org/Util/ hinzufügen und dann den Namespace wie folgt hinzufügen:

namespace Org\Util;
class Image {
}

Auf diese Weise können Sie die Image-Klasse wie folgt direkt instanziieren:

$image = new \Org\Util\Image;

Zusätzlich zu diesen Verzeichnissen können Sie Ihr eigenes Klassenbibliotheksverzeichnis unter dem ThinkPHP/Library-Verzeichnis hinzufügen. Beispielsweise fügen wir ein Com-Verzeichnis für die Erweiterung der Unternehmensklassenbibliothek hinzu:

ComSinaApp-Klasse ( befindet sich in Com/Sina/App.class.php)

namespace Com\Sina;
class App {
}

ComSinaRank-Klasse (befindet sich in Com/Sina/Rank.class.php)

namespace Com\Sina;
class Rank {
}

Zusätzlich zum Bibliotheksverzeichnis des Systems enthält die Öffentliche Klassenbibliothek ist auch Andere Namespaces können angepasst werden. Wir müssen lediglich einen neuen Namespace registrieren und die folgenden Einstellungsparameter in der Anwendungs- oder Modulkonfigurationsdatei hinzufügen:

'AUTOLOAD_NAMESPACE' => array(
  'Lib'   => APP_PATH.'Lib',
)

Wir haben ein Lib-Verzeichnis unter dem Anwendungsverzeichnis erstellt Platzieren Sie die öffentliche Lib-Erweiterung. Wenn wir die beiden oben genannten Klassenbibliotheken im LibSina-Verzeichnis ablegen möchten, müssen wir sie nur an Folgendes anpassen:

LibSinaApp-Klasse (befindet sich in Lib/Sina/App.class.php)

namespace Lib\Sina;
class App {
}

LibSinaRank-Klasse (befindet sich in Lib/Sina/Rank.class.php)

namespace Lib\Sina;
class Rank {
}

Wenn Ihre Klassenbibliothek keinen Namespace verwendet, müssen Sie die Importmethode verwenden, um die Klasse zu laden Zuerst die Bibliotheksdatei erstellen und sie dann instanziieren, zum Beispiel: Wir haben eine Counter-Klasse definiert (in Com/Sina/Util/Counter.class.php):

class Counter {
}

Wenn Sie sie verwenden, müssen Sie sie aufrufen auf folgende Weise:

import('Com.Sina.Util.Couter');
$object = new \Counter();

Anwendungsklassenbibliothek

Die Anwendungsklassenbibliothek ist normalerweise eine Klassenbibliothek im Anwendungs- oder Modulverzeichnis. Der Namespace der Anwendungsklassenbibliothek ist im Allgemeinen der Name des Moduls als Root-Namespace, zum Beispiel: HomeModelUserModel-Klasse (befindet sich in ApplicationHomeModel)

namespace HomeModel;

use ThinkModel;

class UserModel erweitert Model{

}

CommonUtilPay-Klasse (in ApplicationCommonUtil)

namespace Common\Util;
class Pay {
}

AdminApiUserApi-Klasse (in ApplicationAdminApi)

namespace Admin\Api;
use Think\Model;
class UserApi extends Model{
}

Merken Sie sich ein Prinzip, ob der Namespace-Pfad dem tatsächlichen entspricht Dateipfad, automatisches Laden kann während der direkten Instanziierung erreicht werden.

Empfohlenes Tutorial: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonAnalyse von Bibliothekserweiterungsvorgängen wie der Thinkphp-Framework-Erweiterung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen