【问题标题】:Namespace function defaults to global first命名空间函数默认全局优先
【发布时间】:2012-12-19 01:27:19
【问题描述】:

我知道默认情况下,函数调用将首先默认到当前命名空间,然后如果没有找到,将检查全局命名空间。有没有办法改变这种行为,也许使用“将某些东西用作其他东西”以便它只检查全局命名空间?

一个硬性规则是我不能修改命名空间内的函数调用。

例如在全局命名空间中

function get_something() {
  return 1;
}

有问题的文件

namespace new;

$a = get_something();

function get_something() {
  return 2;
}

我希望 $a 被评估为 1。有没有办法在不更新命名空间文件中的所有 $a = get_something() 引用的情况下做到这一点?

【问题讨论】:

  • 为什么你写一个函数,当你不想使用它的时候?为什么你使用相同的函数名,当你看到,你不能以你喜欢的方式处理碰撞? (无论如何,在全局范围内像其他函数一样命名命名空间函数是一个坏习惯)

标签: php namespaces


【解决方案1】:

你可以使用

$a = \get_something();

明确定位全局命名空间。

【讨论】:

  • 这是我不能做的唯一要求
  • 不能添加黑斜线?!?哦
  • 我不能添加反斜杠,因为这是别人的库,我试图通过命名空间来用我自己的函数来包装他们的函数。除非他们调用自己的函数,否则这很有效。
猜你喜欢
  • 1970-01-01
  • 2013-11-19
  • 2012-11-07
  • 2021-03-21
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
相关资源
最近更新 更多