【发布时间】:2014-05-22 06:58:10
【问题描述】:
我正在分析一些在我没有完全访问权限的服务器上运行的 PHP 代码。我可以阅读phpinfo。代码似乎在服务器上运行良好。在我的本地环境中,我无法让代码运行,因为在使用类型提示调用某个方法时出现“可捕获的致命错误”。
someMethod(string $str) {
// Do something...
}
错误内容如下:“传递给 ... 的参数 1 必须是 path\of\namespace\string 的实例,给定字符串 ...”。
字符串类没有 use 关键字,我也无法通过 grep 命令在开发环境的文件夹中找到任何内容。
是否有任何 PHP 模块、扩展可以使这种类型提示起作用?服务器和我的开发环境使用的是 PHP 5.4.25。
实时系统可能提供什么来使此类代码运行?它可能会使用其他一些基于 PHP 的编程语言,比如 Hack?其余的代码是相当直接的 PHP!
【问题讨论】:
-
PHP 不支持标量的类型提示,仅支持数组和对象....虽然 nikic 确实为此提供了代码作为 RFC 的一部分(因此有一个可用的补丁支持它) , 并且得到 Hack 的支持
-
@MarkBaker 他提到字符串来自命名空间。所以在这种情况下一般是可以的。
-
我不相信保留字可以用作类名,即使有命名空间
-
@MarkBaker 我也没有,但显然它有效,很奇怪:codexon.codepad.org/fewDbnLN
-
这里在黑暗中拍摄,但您可能在另一个命名空间中吗?通过尝试抛出异常,我经历了类似的事情。添加一个 \ 解决了这个问题: throw new \Exception(..);
标签: php type-hinting