Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:这些知识看上去不多, 不难, 其实挺不容易掌握, 得多想想
<?php
//建立一个命名空间a\b\c
namespace a\b\c {
class demo
{
public function print_p($text)
{
return __CLASS__ . '---' . $text . '<br>';
}
}
}
//建立一个命名空间a\b
namespace a\b {
class demo
{
public function print_p($text)
{
return __CLASS__ . '---' . $text . '<br>';
}
}
}
//非限定名称
namespace a\b {
$a = new demo();
echo $a->print_p('非限定名称');
}
//限定名称
namespace a\b {
$a = new c\demo();
echo $a->print_p('限定名称');
}
//完全限定名称
namespace {
//命名空间的类别名
use \a\b\c\demo as demo;
//命名空间的别名
use \a\b\c as c;
$c = new c\demo();
$demo = new demo();
echo $c->print_p('完全限定名称');
echo $demo->print_p('完全限定名称');
}
flie1.php
<?php
namespace ns;
class file1
{
public $a=456;
public function a()
{
return '我是file1'.'<br>';
}
}
flie2.php
<?php
namespace ns;
class file2
{
public $a=123444;
public function a()
{
return '我是file2'.'<br>';
}
}
autoload.php
<?php
try {
spl_autoload_register("auto");
} catch (Exception $e) {
die($e->getMessage());
}
function auto($classname)
{
$a = __DIR__ . DIRECTORY_SEPARATOR . $classname . '.php';
$a = str_replace('\\', DIRECTORY_SEPARATOR, $a);
require $a;
}
index.php
<?php
require 'autoload.php';
use ns\file1;
use ns\file2;
$f1 = new file1();
echo $f1->a();
$f2 = new file2();
echo $f2->a();