首页 > 编程 > PHP > 正文

php 命名空间

2019-11-08 00:59:22
字体:
来源:转载
供稿:网友
首先阐述一下概念命名空间: 声明命名空间的代码应该放在<?php 代码后的第一行。 作用封装和组织相关的php类,类似把相关的文件放在同一目录下一样。 子命名空间使用 / 分割。 同一空间的所有类没必要写在同一个php文件里。 厂商命名空间是最重要的命名空间,是最顶层的命名空间,用于识别品牌或组织,具有全局唯一性。 使用use 关键字导入代码。use关键字: use位置在<?php 标签或命名空间之后。 use必须出现在全局作用域中,不能再类或函数中全局命名空间: 有些代码没有命名空间,而是在全局命名空间中,使用时要在类、函数、接口、常量前加上 / 符号

2.使用示例:

phpadvanced 目录下的TestNamespaced.php类<?php namespace phpadvanced; class TestNamespace { PRivate static $name="hehe1"; public static function getName(){ echo self::$name."<br />"; } public static function setName($name){ self::$name = $name; } }phpadvanced/test 目录下的TestNamespaced.php类<?php namespace phpadvanced/test; require_once "../TestNamespace.php"; use phpadvanced/TestNamespace as TestNamespace1; class TestNamespace { private static $name="hehe"; public static function getName(){ echo self::$name."<br />"; } public static function setName($name){ self::$name = $name; } } $obj = new TestNamespace(); $obj->setName("haha2"); $obj->getName(); TestNamespace1::getName();

http://192.168.15.233:8088/phpadvanced/test/TestNamespace.php 执行结果: haha2 hehe1

分析:在不同目录(不同命名空间下)创建相同的类TestNamespace.php,类包含一个私有的静态变量和两个共有的静态方法。 使用require_once 包含文件后,使用use定义命名空间别名。

3.使用示例2

phpadvanced 目录下的TestNamespaced2.php类<?php namespace phpadvanced; require_once "./TestNamespace.php"; require_once "./test/TestNamespace.php"; use phpadvanced/TestNamespace as TestNamespace1; use phpadvanced/test/TestNamespace as TestNamespace11; TestNamespace1::setName("haha"); TestNamespace1::getName(); TestNamespace11::setName("haha2"); TestNamespace11::getName();

http://192.168.15.233:8088/phpadvanced/TestNamespace2.php 执行结果: haha haha2

全局命名空间示例phpadvanced 目录下的TestNamespaced3.php类<?php namespace phpadvanced; class TestNamespace3 { public function test() { $exception = new /Exception(); var_dump($exception); } } $obj = new TestNamespace3(); $obj->test();

http://192.168.15.233:8088/phpadvanced/TestNamespace3.php 没有在Exception前加 / 符号 执行结果:

Fatal error: Class 'phpadvanced/Exception' not found in C:/xampp/htdocs/phpadvanced/TestNamespace3.php on line 8

在Exception前 加 / 符号,执行结果:

object(Exception)#2 (7) { ["message":protected]=> string(0) "" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(46) "C:/xampp/htdocs/phpadvanced/TestNamespace3.php" ["line":protected]=> int(8) ["trace":"Exception":private]=> array(1) { [0]=> array(6) { ["file"]=> string(46) "C:/xampp/htdocs/phpadvanced/TestNamespace3.php" ["line"]=> int(15) ["function"]=> string(4) "test" ["class"]=> string(26) "phpadvanced/TestNamespace3" ["type"]=> string(2) "->" ["args"]=> array(0) { } } } ["previous":"Exception":private]=> NULL}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表