php中的命名空间

时间:2023-12-28 12:21:32

a.php

<?php
namespace a\b;
class Apple{
    function get_info(){
        echo 'aaa'.'<br/>';
    }
}
?>

b.php

<?php
namespace c\d;
class Apple{
    function get_info(){
        echo 'bbb'.'<br/>';
    }
}
?>

c.php

<?php
class Apple{
    function get_info(){
        echo 'ccc'.'<br/>';
    }
}
?>

index.php

<?php
require_once 'a.php';
require_once 'b.php';
require_once 'c.php'; //里面没有加命名空间,是顶层的全局类
/**
 * Fatal error: Cannot redeclare class Apple in D:\phpEnv\www\test\b.php on line 3
 * 致命错误:不能重新声明Apple类
 */
/**
 * 在a.php和b.php当中使用了namespace(命名空间之后)不会报错
 * 备注:(只需在其中的一个中书写命名空间也可)
 */
use a\b\Apple;
use c\d\Apple as newApple; //取别名的目的是避免错误冲突
$app_my=new a\b\Apple();
$app_my2=new c\d\Apple();
$app_my->get_info(); //输出:aaa
$app_my2->get_info();//输出:bbb
$app_my3=new Apple();
$app_my4=new Apple();
$app_my5=new Apple();
$app_my3->get_info(); //输出:aaa
$app_my6=new newApple();
$app_my6->get_info(); //输出:bbb
$app_my7=new \Apple();  //前面加上反斜杠是为了告诉程序,这个是处于顶层的命名空间(全局类)
$app_my7->get_info(); //输出:ccc
?>