php - Kekeliruan tentang ruang nama dan penggunaan
代言
代言 2017-06-24 09:42:35
0
3
934

Gunakan namespaceuse的时候有些疑惑
在框架中随便use某个带有namespace(命名空间)的文件,直接new untuk membuat seketika dan mendapatkan objek

Walau bagaimanapun, apabila saya membuat ujian direktori secara setempat
Saya mendapati bahawa apabila memanggil fail dengan ruang namanamespace文件的时候
不能直接采用use的方式引用,进行实例化
而是先要requireSaya tidak boleh terus menggunakan kaedah use untuk merujuk dan membuat instantiate
Dan Ia adalah perlu untuk memerlukan terlebih dahulu

sebelum ia boleh digunakan seperti biasa

requrie要实例化的文件,但是use之后就直接可以newNamun, apabila saya menyemak rangka kerja itu, saya mendapati ia seolah-olah tidak dibuat terlebih dahulu. Apakah sebabnya?

Lampirkan fail direktori ujian tempatan anda sendiri


Struktur direktori

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);

Dilampirkan beberapa tangkapan skrin penggunaan dalam rangka kerja

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

Terima kasih atas jawapan anda semua,

mesti pagi-pagi tak makan ubat eh! Kesimpulan~

Tambahkan sedikit akal tentang memuatkan kelas
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);
            }
        }
    }    
代言
代言

membalas semua(3)
刘奇
框架使用了自动加载机制

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

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

Pendaftaran dan pemuatan sendiri https://github.com/TIGERB/eas...

为情所困

Poster menggunakan rangka kerja CI, bukan? Rangka kerja itu telah membantu anda spl_autoload_register($callable); https:// /github.com/bcit-ci/Co...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!