
批改狀態(tài):合格
老師批語:有了命名空間, 就不再擔(dān)心全局成員的命名沖突了,包括引入的第三方組件,這是促進(jìn)php組件化開發(fā)的基石, 可以說, 現(xiàn)代php就靠它實(shí)現(xiàn)華麗轉(zhuǎn)身
<?php
//清華大學(xué)
namespace nQhdx//不同的命名空間可以存在相同的類,函數(shù),接口,常量
{
class StuInfo
{
private $school = '清華大學(xué)';
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
//訪問當(dāng)前空間中的類和類中的方法,可省略當(dāng)前空間名稱:非限定名稱
$stu = new StuInfo();
$stu ->printSDC();
}
//人民大學(xué)
namespace nRmdx
{
class StuInfo
{
private $school = '人民大學(xué)';
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
//訪問當(dāng)前空間中的類和類中的方法,可省略當(dāng)前空間名稱:非限定名稱
$stu = new StuInfo();
$stu ->printSDC();
//訪問另一個(gè)空間是的類需要使用:完全限定名稱以“\”開頭+空間名稱+類名
echo '***********訪問另一個(gè)空間的類***************','<br>';
$stu1 =new \nQhdx\StuInfo();
$stu1 ->printSDC();
}
//北京大學(xué)
namespace nBjdx
{
class School
{
private $school = '北京大學(xué)';
public function printSchool()
{
//訪問具有層級(jí)關(guān)系的空間時(shí)
//$dep = new Computer\StuInfo();代表訪問的是當(dāng)前空間下的Computer空間下的StuInof類
$dep = new Computer\StuInfo();
$dep->printSDC();
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
$stu = new School();
$stu -> printSchool();
}
namespace nBjdx\Computer
{
class StuInfo
{
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
}
}
}
?>
<?php
//清華大學(xué)
namespace nQhdx//不同的命名空間可以存在相同的類,函數(shù),接口,常量
{
class StuInfo
{
private $school = '清華大學(xué)';
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
}
//人民大學(xué)
namespace nRmdx
{
class StuInfo
{
private $school = '人民大學(xué)';
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
}
//北京大學(xué)
namespace nBjdx
{
class StuInfo
{
private $school = '北京大學(xué)';
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
}
namespace nSchool
{
//使用空間別名,可以簡(jiǎn)化代碼
use \nQhdx\StuInfo as qStu;
use \nRmdx\StuInfo as rStu;
use \nBjdx\StuInfo as bStu;
$stu1 = new qStu();//通過空間別名訪問該空間中的類
$stu1 ->printSDC();
$stu2 = new rStu();
$stu2 ->printSDC();
$stu3 = new bStu();
$stu3 ->printSDC();
}
?>
<?php
require 'autoLoad.php';
//通過autoLoad.php中的自動(dòng)加載器,在使用Qhdx類的時(shí)候自動(dòng)加載
//如果想使用原始類中的名稱則不需要加as關(guān)鍵字
use stuInfo\school\Qhdx;
//通過autoLoad.php中的自動(dòng)加載器,在使用Qhdx類的時(shí)候自動(dòng)加載
use stuInfo\school\Rmdx;
//通過autoLoad.php中的自動(dòng)加載器,在使用Qhdx類的時(shí)候自動(dòng)加載
use stuInfo\school\Bjdx;
//類已經(jīng)通過自動(dòng)加載器加載成功,可直接使用
$stu1 = new Qhdx();
$stu1 ->printSDC();
$stu2 = new Rmdx();
$stu2 ->printSDC();
$stu3 = new Bjdx();
$stu3 ->printSDC();
?>
<?php
//北京大學(xué)
//要實(shí)現(xiàn)自動(dòng)加載,
//1.空間名稱必須和類文件所在的路徑一一對(duì)應(yīng)
//2.文件名必須與類名相同
namespace stuInfo\school
{
class Bjdx
{
private $school = '北京大學(xué)';
private $dep = '計(jì)算機(jī)科學(xué)與應(yīng)用';
private $classes = '04-08';
public function printSDC()
{
echo '班名:',$this ->classes,'<br>';
echo '系名:',$this ->dep,'<br>';
echo '校名:',$this ->school,'<br>';
echo '<hr>';
}
}
}
?>
<?php
try
{
spl_autoload_register(function($className){
//DIRECTORY_SEPARATOR返回當(dāng)前系統(tǒng)的目錄分隔符
//將空間中的分隔符替換成當(dāng)前系統(tǒng)的目錄分隔符
$path = str_replace('\\', DIRECTORY_SEPARATOR, $className);
//__DIR__返回當(dāng)前文件所在路徑
//生成要加載的類文件名稱
$file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';
// 3. 加載這個(gè)文件
require $file;
});
}
catch(Exception $e)
{
$e->getMessage();
}
?>
當(dāng)前類文件所在的目錄結(jié)構(gòu)
代碼運(yùn)行效果
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)