重温记录PHP中namespace、use以及require、include区别与联系

    技术2022-07-11  148

    简述其根本作用

    require/include: 引入文件,二者区别就是文件找不到时,require会报errore而include不会,但是require相对速度更快namespace: 是解决多文件引用后导致的同名冲突问题use: 简单说就是起别名,引入namespace 后导致一个类完整的名称可能会特别长

    下面举例说明require、namespace、use三者的配合使用:

    项目目录结构:

    |-- spaceTestB |--TestBChild |-- TestC.php |-- TestB.php |-- index.php |-- TestA.php <?php # filename: index.php require "TestA.php"; require "spaceTestB/TestB.php"; require "spaceTestB/testBChild/TestC.php"; use namespaceTestB\testBChild\TestC; echo "index"."<br>"; $a = new TestA(); $a->main(); $b = new namespaceTestB\TestB(); $b->main(); $c = new TestC(); $c->main(); ?> <?php # filename: testA.php class TestA { public function main() { echo "TestA"."<br>"; } } ?> <?php # filename: testB.php namespace namespaceTestB; class TestB { public function main() { echo "TestB"."<br>"; } } ?> <?php # filename: testC.php namespace namespaceTestB\testBChild; class TestC { public function main() { echo "TestC"."<br>"; } } ?>

    直接执行接的结果为正常输出:

    index TestA TestB TestC

    问题说明

    index使用TestA类,TestA没有使用命名空间,直接使用require引入才能使用,这里应该没问题index使用TestB类,TestB有使用名空间,仍旧需要require引入,但是在使用的跟没有使用命名空间有区别,这里使用是:$b = new namespaceTestB\TestB();index使用TestC类,跟TestB类前面都一样,但是这里我们使用use关键字起别名,此处要注意的一点是需要require
    Processed: 0.008, SQL: 9