PHP命名空间

20次阅读
没有评论

共计 1569 个字符,预计需要花费 4 分钟才能阅读完成。

基本使用

默认情况下常量、类和函数名都放在全局空间下。命名空间通过 namespace 来声明,必须定义在文件头部,并在 declare(strict_types=1) 语句下面。

文件 a.php

<?php
namespace A;
function test() {echo 'test-A';}

文件 b.php

<?php
namespace B;
function test() {echo 'test-B';}

文件 index.php

<?php
include 'a.php';
include 'b.php';
A\test();
B\test();

引入方式

非限定名称

调用类时没有指定命名空间时,将使用当前命名空间。

限定名称

类似于文件系统中的相对路径。

文件 a.php

<?php
namespace A\B;
class Test {public static function test() {echo __METHOD__;}
}

文件 b.php

<?php
namespace A;
include 'a.php';
class Test {public static function test() {echo __METHOD__;}
}

Test::test(); // A\Test::test
B\Test::test(); // A\B\Test::test

完全限定名称

类似于文件系统中的绝对路径。

文件 a.php

<?php
namespace A;
class Test {public static function test() {echo 'test-' . __METHOD__;}
}

文件 b.php

<?php
namespace B;
include 'a.php';
class Test {public static function test() {echo 'test-' . __METHOD__;}
}

Test::test(); // test-B\Test::test
\A\Test::test(); // test-A\Test::test

别名引入

通过操作符 use 来为类或命名空间使用别名。

文件 a.php

<?php
namespace A\B\C;
class Test {public static function test() {echo 'test-' . __METHOD__;}
}

文件 b.php

<?php
namespace A;
use A\B\C\Test;
use A\B\C\Test as Testa;
include 'a.php';
Test::test(); // test-A\B\C\Test::test
Testa::test(); // test-A\B\C\Test::test

Composer

是 PHP 5.3 以上的一个依赖管理工具,官网:https://getcomposer.org/

安装

下载并运行 Composer-Setup.exe,它将安装最新版本的 Composer,并设置好系统环境变量,可在任何目录下直接使用 composer 命令。

配置中国镜像

修改 composer 全局配置文件,打开命令行窗口并执行命令:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

如果需要解除镜像并恢复到 packagist 官方源,执行命令:composer config -g --unset repos.packagist

项目初始化

执行命令:composer init,可一直回车下去。

修改配置

修改 composer.json 配置文件,其中 autoload 配置项是自动加载设置。

  • files:自动加载文件列表,适合于加载函数
  • psr-4:自动加载命名空间与目录对应关系

修改过配置文件需要执行:composer update

配置

在项目中使用以下代码即可完成自动加载。

include 'vendor/autoload.php';

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2023-11-15发表,共计1569字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)