Cet article présente principalement l'espace de noms PHP orienté objet et les classes chargées automatiquement en programmation, et analyse l'espace de noms php et le chargement automatique sous forme de exemples. Le concept, la fonction, l'utilisation et les Notes associées des classes de chargement, les amis dans le besoin peuvent s'y référer
Cet article décrit l'espace de noms et les classes de chargement automatique de la programmation orientée objet PHP avec exemples. Partagez-le avec tout le monde pour référence, comme suit :
Espace de noms
pour éviter la duplication des noms de classe et les erreurs.
<?php require_once "useful/Outputter.php"; class Outputter { // output data private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } $obj = new Outputter(); // 同一命名空间下,类名不能相同,默认命名空间为空。空也是一种命名空间。 $obj -> setName("Jack"); print $obj->getName(); //namespace useful; // 更改命名空间,否则查询不到Hello类,Fatal error: Class 'my\Hello' not found $hello = new Hello(); ?> <?php // useful/Outputter.php namespace useful; // 命名空间 class Outputter { // } class Hello { } ?>
Comment appeler une classe dans l'espace de noms
<?php namespace com\getinstance\util; class Debug { static function helloWorld() { print "hello from Debug\n"; } } namespace main; // com\getinstance\util\Debug::helloWorld(); // 找不到Debug类 \com\getinstance\util\Debug::helloWorld(); // 加斜杠之后,就从根部去寻找了。 // outPut:hello from Debug ?>
Utilisez le mot-clé use
<?php namespace com\getinstance\util; class Debug { static function helloWorld() { print "hello from Debug\n"; } } namespace main; use com\getinstance\util; //Debug::helloWorld(); //Fatal error: Class 'main\Debug' not found util\Debug::helloWorld(); ?>
En utilisant le traitement suivant, vous pouvez appeler directement la classe
<?php namespace com\getinstance\util; class Debug { static function helloWorld() { print "hello from Debug\n"; } } namespace main; use com\getinstance\util\Debug; // 直接使用到类 Debug::helloWorld(); ?>
pour représenter le
global.php
<?php // no namespace class Lister { public static function helloWorld() { print "hello from global\n"; } } ?> <?php namespace com\getinstance\util; require_once 'global.php'; class Lister { public static function helloWorld() { print "hello from ".NAMESPACE."\n"; // NAMESPACE当前namespace } } Lister::helloWorld(); // access local \Lister::helloWorld(); // access global ?>
Sortie :
bonjour de comgetinstanceutil
bonjour de l'espace de noms global
plus {}
<?php namespace com\getinstance\util { class Debug { static function helloWorld() { print "hello from Debug\n"; } } } namespace main { \com\getinstance\util\Debug::helloWorld(); } ?>
sortie :
Bonjour de Debug
Espace de noms global
<?php namespace { // 全局空间 class Lister { public static function helloWorld() { print "hello from global\n"; } } } namespace com\getinstance\util { class Lister { public static function helloWorld() { print "hello from ".NAMESPACE."\n"; } } Lister::helloWorld(); // access local \Lister::helloWorld(); // access global } ?>
classe de chargement automatique à chargement automatique
ShopProduct.php
<?php class ShopProduct { function construct() { print "ShopProduct constructor\n"; } } ?> <?php function autoload( $classname ) { // 自动加载,根据类名加载类 include_once( "$classname.php" ); } $product = new ShopProduct( 'The Darkening', 'Harry', 'Hunter', 12.99 ); ?>
sortie :
Constructeur ShopProduct
Un traitement d'optimisation supplémentaire
se trouve dans le dossier business/ShopProduct.php
<?php class business_ShopProduct { // 这里的类命名就要遵循规则了 function construct() { print "business_ShopProduct constructor\n"; } } ?> <?php function autoload( $classname ) { $path = str_replace('_', DIRECTORY_SEPARATOR, $classname ); // 智能化处理 require_once( "$path.php" ); } $x = new ShopProduct(); $y = new business_ShopProduct(); ?>
sortie :
Constructeur ShopProduct
constructeur business_ShopProduct
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!