爱问知识人 爱问教育 医院库

namespace-php如何通过命名空间使用其他文件中的变量

首页

namespace-php如何通过命名空间使用其他文件中的变量


        

提交回答
好评回答
  • 2023-03-06 17:30:00
    phpnamespace

    比如有个 a.php 这样定义
    namespace np1; $foo = 'foo'; const foofoo = 'foofoo';
    另外有个 b.php 这样定义
    namespace np2; $bar = 'bar'; const barbar = 'barbar';
    在c.php定义
    require "a.php" ; require "b.php";
    $baz = np1\$foo; $qux = np2\$bar;
    echo "$baz and $qux !"

    三个文件在同一目录中,已经被正确require了,运行会出错!
    而c.php 中输出a.php 和b.php 中的常量,比如c.php如下:
    $baz = np1\foofoo; $qux = np2\barbar;
    echo "$baz and $qux !"

    则能正确输出。
    所以问题来了,怎样才能在c.php通过命名空间标识使用a.php 和 b.php中的变量$foo和$bar .
    好吧,是我问题没有提清楚。试了下,直接 echo "$foo"; 是可以输出的!但是既然
    $foo是命名空间np1中定义的变量,为什么在c.php中使用时不能加上命名空间的名字呢,比如这样 echo np1\$foo;

    但是相反,如果a.php 中定义了一个类和一个常量,比如a.php 这样定义:

    your name: $name, and your login ? ? ? time: $time
    ";}? ?public function saysth(){? ?echo "echoing from function saysth of np1\C1
    ";}

    }

    在c.php文件中可以通过命名空间np1使用文件a.php中的常量 foofoo和类C1但是无法通过命名空间使用变量$foo .
    比如c.php 这样

    require "a.php" ;
    require "b.php";
    $baz = new np1\C1("leon",time());
    $qux = np1\foofoo;

    $baz.saysth();
    echo "$qux
    ";

    上述c.php能够正常使用np1中的类C1和常量foofoo, 但是为什么不能通过np1\$foo 使用np1中的变量$foo 呢,搞不懂!不信大家可以试试.

    设想一下如果b.php文件和a.php文件中同有名为$foo的变量 ,这样在c.php 直接使用$foo而不加命名空间限定,程序怎么判断这个变量是哪个文件定义的呢(我试了一下谁require在后输出谁的变量)?

    我***

    2023-03-06 17:30:00

类似问题

换一换

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):