Utilisez namespace
和use
的时候有些疑惑
在框架中随便use
某个带有namespace
(命名空间
)的文件,直接new
pour instancier et obtenir l'objet
Cependant, lorsque j'ai fait un test de répertoire localement
J'ai découvert que lors de l'appel d'un fichier avec un namespace
namespace
文件的时候
不能直接采用use
的方式引用,进行实例化
而是先要require
Je ne peux pas utiliser directement la méthode use
pour référencer et instancier
Et il il est nécessaire de require
d'abord
requrie
要实例化的文件,但是use
之后就直接可以new
Cependant, lorsque j'ai vérifié le framework, j'ai constaté qu'il semblait qu'il n'avait pas été instancié au préalable. Quelle en est la raison ?
Structure de répertoire
library
-->core.php
test.php
core.php
<?php
namespace library;
class core
{
}
test.php
<?php
require_once 'library/core.php'; // 必须要require
// 第一种实例化
// use \library\core;
// $obj = new core();
// 第二种实例化
$obj = new \library\corecore();
var_dump($obj);
Ci-joint quelques captures d'écran d'utilisation dans le framework
想不通...搞不懂...
Je n'ai dû prendre aucun médicament le matin, hein ! Conclusion~
Ajoutez un peu de bon sens concernant le chargement des coursspl_autoload_register($callback);
/**
* 自动加载类库
* @param string $strClass 方法名
*/
static public function load($strClass)
{
$strClassPath = CHARM . '\' .$strClass . APPEXT;
if(in_array($strClass, self::$arrClassMap)) {
return TRUE;
}else {
if(is_file($strClassPath)) {
require_once $strClassPath;
self::$arrClassMap[$strClass] = $strClass;
}else {
throw new \Exception("找不到类库 -- " . $strCtrlFile);
}
}
}
Inscription et auto-chargement https://github.com/TIGERB/eas...
L'affiche utilise le framework CI, n'est-ce pas ? Le framework vous a déjà aidé spl_autoload_register($callable); en termes simples, quelle que soit la classe que vous utilisez, cela vous aidera à require_once which class
Vous pouvez consulter ce CI pour une implémentation de code spécifique
Loader类
https://github.com/bcit-ci/Co...