我决定开始一个新项目来进入 hacklang,在解决了一些我最初遇到的从 php 习惯过渡的问题之后,我遇到了以下错误:
Unbound name: str_replace
Unbound name: empty
做了一些研究,我发现这是由于使用了未经过类型检查的“旧版”php,并且会在//strict
.
这很好,empty()
很容易更换,但是str_replace()
有点困难。
是否有等效的功能可以使用//strict?
或至少类似的功能。
我知道我可以使用//decl
,但我觉得这违背了我的目的。
至少有什么方法可以判断哪些功能是在 hack 中实现的,哪些不在文档中,因为我找不到?
作为参考(虽然它与问题本身并不太相关),这里是代码:
<?hh //strict
class HackMarkdown {
public function parse(string $content) : string {
if($content===null){
throw new RuntimeException('Empty Content');
}
$prepared = $this->prepare($content);
}
private function prepare(string $contentpre) : Vector<string>{
$contentpre = str_replace(array("\r\n","\r"),"\n",$contentpre);
//probably need more in here
$prepared = Vector::fromArray(explode($contentpre,"\n"));
//and here
return $prepared;
}
}