Rumah > Soal Jawab > teks badan
Gunakan namespace
和use
的时候有些疑惑
在框架中随便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 nama
namespace
文件的时候
不能直接采用use
的方式引用,进行实例化
而是先要require
Saya tidak boleh terus menggunakan kaedah use
untuk merujuk dan membuat instantiate
Dan Ia adalah perlu untuk
requrie
要实例化的文件,但是use
之后就直接可以new
Namun, apabila saya menyemak rangka kerja itu, saya mendapati ia seolah-olah tidak dibuat terlebih dahulu. Apakah sebabnya?
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
想不通...搞不懂...
mesti pagi-pagi tak makan ubat eh! Kesimpulan~
Tambahkan sedikit akal tentang memuatkan kelasspl_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);
}
}
}
怪我咯2017-06-24 09:44:35
框架使用了自动加载机制
实现原理
spl_autoload_register($callable);
或
__autoload($callable);
这个函数注册了一个函数,在当前文件找不到对应的类时将自动调用,
执行其回调函数,将new的类include进来
为情所困2017-06-24 09:44:35
Poster menggunakan rangka kerja CI, bukan? Rangka kerja itu telah membantu anda spl_autoload_register($callable); https:// /github.com/bcit-ci/Co...