命名空间中的include

ipipip1735 2015-05-28 06:21:42
官方手册http://php.net/manual/zh/language.namespaces.basics.php




file1.php



<?php
namespace Foo\Bar\subnamespace;

const FOO = 1;
function foo() {}
class foo
{
static function staticmethod() {}
}
?>





file2.php



<?php
namespace Foo\Bar;
include 'file1.php';

const FOO = 2;
function foo() {}
class foo
{
static function staticmethod() {}
}
?>





我的问题是
include 'file1.php'; 是如何执行的, 用file1中的语句代换本行吗?


比如这样
namespace Foo\Bar;

namespace Foo\Bar\subnamespace;
const FOO = 1;
function foo() {}
class foo
{
static function staticmethod() {}
}


const FOO = 2;
function foo() {}
class foo
{
static function staticmethod() {}
}




报致命错误


是什么回事??
...全文
162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-05-29
  • 打赏
  • 举报
回复
你是熬夜迷糊了吧?都写给你了,没看见吗 应将每个命名空间的代码用 { } 括起
ipipip1735 2015-05-29
  • 打赏
  • 举报
回复
多谢,但是这些官方都有些到 我想了解底层的东西 include 'file1.php'; 是如何执行的, 用file1中的语句代换本行吗?
xuzuning 2015-05-28
  • 打赏
  • 举报
回复
命名空间的作用是限定代码的作用范围 所以一个命名空间保存于一个文件中是妥当的 不同的命名空间下可以有相同的类名(或其他),它们可以是同一个类的不同版本,也可以是完全不同的类 只要它们实现了同样的接口,那么你可任意载入其中一个而不需要改变主程序的任何代码 使用命名空间时,第一个 namespace 必须出现在程序正文的第一行且代码块前面不能有输出 如果程序中有多个命名空间声明时(一般不建议这样做,容易出错,也限制了使用范围),应将每个命名空间的代码用 { } 括起
<?php
namespace Foo\Bar {
  const FOO = 1;
  function foo() {echo __METHOD__ . '<br>';}
  class foo
  {
    static function staticmethod() { echo __METHOD__ . '<br>'; }
  }
  foo::staticmethod();
  foo();
} 

namespace Foo\Bar\subnamespace {
  const FOO = 2;
  function foo() { echo __METHOD__ . '<br>'; }
  class foo
  {
    static function staticmethod() { echo __METHOD__ . '<br>'; }
  }
  foo::staticmethod();
  foo();
}
Foo\Bar\foo::staticmethod
Foo\Bar\foo
Foo\Bar\subnamespace\foo::staticmethod
Foo\Bar\subnamespace\foo

21,892

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧