程序员人生 网站导航

关于php命名空间的实战测试

栏目:框架设计时间:2015-05-22 08:00:29


                   在写php 程序是有时候会遇到下面这样的毛病: (你的类重复定义了);  这时候我们就需要命名空间的帮助. 

               但是这个命名空间和c++的命名空间有1些不同, 我在测试的进程中就遇到1些问题,我把这些问题逐一列出来以避免以后重蹈复辙.

           

       这是我文件的目录结构 :                      ns_test下有1个文件夹和 两个 文件,      在folder下还有1个class3.php的文件


                 下面是class1.php中的代码:

<span style="font-size:12px;"><? namespace ns1s1; //使用命名空间ns1s1 下面的所有类都在该命名空间中 $path= dirname(__FILE__)."/"; //取得文件所在的文件夹路径 $path=str_replace('','/',$path); //echo $path."class1.php"."<br>"; require_once($path."folder/class3.php"); class c1{ function say() { echo "命名空间:ns1s1: c1 say()<br>"; } } class comm_cls{ function say() { echo "命名空间:ns1s1: comm_cls say() <br>"; } } function test() { echo "命名空间:ns1s1 :test() <br>"; } ?></span>
                       下面是class2.php中的代码:

<span style="font-size:12px;"><? header("Content-type: text/html; charset=utf⑻"); //namespace ns1s1; //有重复的类 在开始声明命名空间的话 该文件下面的所有类和函数就都属于该命名空间 //不声明命名空间 默许就是全局的  $path= dirname(__FILE__)."/"; //取得文件所在的文件夹路径 $path=str_replace('','/',$path); //echo $path."class1.php"."<br>"; require_once($path."class1.php"); class c2{ function say() { echo "全局 :c2 say() <br>"; } } // 有命名空间的隔离就能够在不同的命名空间中定义相同的类名的类 class comm_cls{ function say() { echo "全局: comm_cls say() <br>"; } } use ns1s1 as s2; //定义别名 $t1=new ns1s1c1(); //使用完全的命名空间 $t1->say(); s2 est(); $t3=new s2comm_cls(); //使用命名空间的别名 $t3->say(); $t5=new s2c3(); $t5->say(); // s2 est();写法有问题 即在s2前加''有问题  $t2=new c2(); $t2->say(); $t4=new comm_cls(); $t4->say(); //namespace ns1s1; 命名空间应当在代码的最开始声明 ?></span>

       下面是class3.php中的代码:

<span style="font-size:12px;"><? namespace ns1s1; //使用和class1.php 中1样的命名空间 class c3{ function say() { echo "命名空间:nsas1: c3 say()<br>"; } } //如果定义下面的类的话 就会出现重定义毛病 // class comm_cls{ // function say() // { // echo "s1: c2 say() <br>"; // } // } // function test() // { // echo "s1 :test() <br>"; // } ?></span>

测试 : 在阅读器中打开class2.php

实际使用









------分隔线----------------------------
------分隔线----------------------------

最新技术推荐