php - Confusion sur l'espace de noms et son utilisation
代言
代言 2017-06-24 09:42:35
0
3
981

Utilisez namespaceuse的时候有些疑惑
在框架中随便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 namespacenamespace文件的时候
不能直接采用use的方式引用,进行实例化
而是先要requireJe 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

avant de pouvoir être instancié normalement

requrie要实例化的文件,但是use之后就直接可以newCependant, 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 ?

Joignez votre propre fichier de répertoire de test local


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

想不通...搞不懂...

Merci à tous pour vos réponses,

Je n'ai dû prendre aucun médicament le matin, hein ! Conclusion~

Ajoutez un peu de bon sens concernant le chargement des cours
spl_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);
            }
        }
    }    
代言
代言

répondre à tous(3)
刘奇
框架使用了自动加载机制

实现原理
spl_autoload_register($callable);
或
__autoload($callable);

这个函数注册了一个函数,在当前文件找不到对应的类时将自动调用,
执行其回调函数,将new的类include进来
某草草

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écifiqueLoader类 https://github.com/bcit-ci/Co...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal