Я решил начать новый проект, чтобы попасть в hacklang, и после исправления некоторых проблем, с которыми я изначально столкнулся при переходе с php-привычек, я столкнулся со следующими ошибками:
Unbound name: str_replace
Unbound name: empty
Проведя некоторое исследование, я обнаружил, что это связано с использованием «устаревшего» php, который не проверяется на тип, и выдает ошибку с //strict
.
Ничего страшного, empty()
было достаточно легко заменить, а вот str_replace()
немного сложнее.
Есть ли эквивалентная функция, которая будет работать с //strict?
Или хотя бы что-то подобное.
Я знаю, что мог бы использовать //decl
, но мне кажется, что в моем случае это противоречит цели.
Есть ли хоть какой-то способ узнать, какие функции реализованы в хаке, а какие нет в документации, поскольку я не смог найти?
Для справки (хотя это не слишком относится к самому вопросу), вот код:
<?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;
}
}