Maison  >  Article  >  développement back-end  >  Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

伊谢尔伦
伊谢尔伦original
2017-07-01 10:07:476137parcourir

use utilise simplement l' espace de noms ,
mais pour appeler une classe, vous devez charger le fichier de classe, ou le charger automatiquement .

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Même si l'une des classes est introduite, s'il n'y a pas de mécanisme de chargement automatique, une erreur sera quand même signalée

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Plusieurs usages d'utilisation

namespace Blog\Article;
class Comment { }

//创建一个BBS空间(我有打算开个论坛)
namespace BBS;

//导入一个命名空间
use Blog\Article;
//导入命名空间后可使用限定名称调用元素
$article_comment = new Article\Comment();

//为命名空间使用别名
use Blog\Article as Arte;
//使用别名代替空间名
$article_comment = new Arte\Comment();

//导入一个类
use Blog\Article\Comment;
//导入类后可使用非限定名称调用元素
$article_comment = new Comment();

//为类使用别名
use Blog\Article\Comment as Comt;
//使用别名代替空间名
$article_comment = new Comt();

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

1. à condition qu'il y ait un mécanisme de chargement automatique)

use OSS\OssClient; // 表示引入Class 'OSS\OssClient'

Lors de son utilisation,

$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);

ou comme ceci

$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);

peut être utilisé !

2. La deuxième méthode d'introduction (à condition qu'il existe un mécanisme de chargement automatique)

import('@.ORG.OSS.OssClient'); // thinkphp中的加载机制

ne peut être utilisée que dans l'un des

$ossClient = new OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint, false);  // 其中OSS是命名空间

thinkphp Le mécanisme Grâce au chargement automatique des espaces de noms, les espaces de noms dans le répertoire Liberary du

framework peuvent être automatiquement identifiés et localisés, comme suit :

Cadre de la bibliothèque Bibliothèque de classesrépertoire
│ ├ ─Répertoire du package de bibliothèque de classes Think Core Think
│ ├─Répertoire du package de bibliothèque de classes Org Org
│ ├─ ... Plus de répertoires de bibliothèques de classes

Donc, s'il y a un espace de noms, il n'y en a pas besoin de le présenter. Des documents sont également disponibles.
Mais pour une classe sans espace de noms, si vous n'importez pas de fichier, une erreur sera signalée.
Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Importez-le simplement,
Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

Explication détaillée PHP des exemples d'utilisation, de l'espace de noms, des fichiers de classe importés et des classes chargées automatiquement

3.autoload

Il s'agit d'une fonction de chargement automatique En PHP5, cette fonction est déclenchée lorsque nous instancions une classe non définie. Regardez l'exemple suivant :

printit.class.php 
 
<?php 
 
class PRINTIT { 
 
 function doPrint() {
  echo &#39;hello world&#39;;
 }
}
?> 
 
index.php 
 
<?
function autoload( $class ) {
 $file = $class . &#39;.class.php&#39;;  
 if ( is_file($file) ) {  
  require_once($file);  
 }
} 
 
$obj = new PRINTIT();
$obj->doPrint();
?>

Après avoir exécuté index.php, hello world s'affiche normalement. Dans index.php, puisque printit.class.php n'est pas inclus, lors de l'instanciation de printit, la fonction de chargement automatique est automatiquement appelée. La valeur du paramètre $class est le nom de la classe printit. À ce stade, printit.class.php est introduit. .

4.spl_autoload_register
Regardez spl_autoload_register() à nouveau. Cette fonction a le même effet que autoload. Regardons un exemple simple :

<?
function loadprint( $class ) {
 $file = $class . &#39;.class.php&#39;;  
 if (is_file($file)) {  
  require_once($file);  
 } 
} 
 
spl_autoload_register( &#39;loadprint&#39; ); 
 
$obj = new PRINTIT();
$obj->doPrint();
?>

Remplacez autoload par la fonction loadprint. Mais loadprint ne sera pas déclenché automatiquement comme autoload. À ce stade, spl_autoload_register() fonctionnera. Il indique à PHP d'exécuter loadprint() lorsqu'il rencontre une classe non définie.

spl_autoload_register() appelle la méthode statique ,

<? 
 
class test {
 public static function loadprint( $class ) {
  $file = $class . &#39;.class.php&#39;;  
  if (is_file($file)) {  
   require_once($file);  
  } 
 }
} 
 
spl_autoload_register(  array(&#39;test&#39;,&#39;loadprint&#39;)  );
//另一种写法:spl_autoload_register(  "test::loadprint"  ); 
 
$obj = new PRINTIT();
$obj->doPrint();
?>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn