西峰教育网(开源达人关于PHP命名空间)

西峰教育网:开源达人关于PHP 命名空间的一些白话。

西峰教育网
西峰教育网
关于命名空间:
1.php 2.php 3.php
在3.php 引入 1.php 2.php 其中两个类名相同,就会因为类名的相同而报错。解决办法:两个文件进行命名空间的命名 

namespace my1;   namespace my2; 

2.如果在3.php中我要实例化  1.php 的中类多次的话,
$a =   new atestTest();
$a_a = new atestTest();
$a_b = new atestTest();
虽然不报错,但是不太美观。解决办法:
use atestTest;
$a = new Test();
$a_a = new Test();
$a_b = new Test();
use关键字是用来引入类,用命名空间的方式表示使用了某个类。

3.如果我引入多个文件的(1.php 2.php等 )命名空间。虽然使用了命名空间,但是类名相同就会报错。这时候你就用到了as关键

字完美解决。

require_once("a.php");
require_once("b.php");
use atestTest;
use btestTest;
$a = new Test();
$b = new Test();
$a->test();
$b->test();

解决办法:
require_once("a.php");
require_once("b.php");
use atestTest;
use btestTest as BTest;
$a = new Test();
$b = new BTest();
$a->test();//页面输出:this is A class.
$b->test();//页面输出:this is B class.
as关键字是对类名称定义别名,可以有效防止类名称相同冲突 

4.没有命名空间的叫做全局类,如果要使用需要类前面加入反斜杠”” 比如我们在a.php同级再建立一个全局类文件:c.php:

class Test{

 public function test()

  {

   echo "this is C class.";

  }

}

在index.php文件中这样做即可调用c.php中的test方法

require_once("a.php");
require_once("b.php");
require_once("c.php");

//页面输出:this is C class.
use atestTest;
use btestTest as BTest;
$a = new Test();
$b = new BTest();
$c = new Test();
$a->test();//页面输出:this is A class.
$b->test();//页面输出:this is B class.
$c->test();//页面输出:this is C class.

5.将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。

<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace {    // 全局代码
session_start();
$a = MyProjectconnect();
echo MyProjectConnection::start();
}
?>

6.在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命

名空间的声明之前。declare(encoding='UTF-8'); 

<?php
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // 全局代码
session_start();
$a = MyProjectconnect();
echo MyProjectConnection::start();
}
?>


7.const用于类成员变量 和 普通全局常量 define('ABC',"这个是普通全局常量");
类常量

<?php
namespace a;
const LCL = "这是类常量";

define("QJCL","这是全局常量");
namespace b;

echo aLCL;
echo aQJCL; //这是全局常量。
本文《西峰教育网(开源达人关于PHP命名空间)》由网赚联盟( wangzhuan.org.cn )整理或原创,感谢您的阅读。

随机文章

SEO小小课堂网
搜素引擎算法
网站内容优化
GEO培训
SEO小小课堂网
SEO教程
站长导航
友情链接交换

百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/17289.html