見かけた PHP のコードに Safe 版関数を使っているものがありました
使っているライブラリはこれのようです
https://github.com/thecodingmachine/safe
Safe 版ってなにしてるの?
文字数が長すぎるとか引数チェックをして脆弱性の対処をこのレイヤーでやってくれるの?
とか思っていたら単にエラーの場合に throw してくれるだけのようです
中身を見ても単純なものです
json_encode
https://github.com/thecodingmachine/safe/blob/v2.4.0/generated/json.php#L50
mkdir
https://github.com/thecodingmachine/safe/blob/v2.4.0/generated/filesystem.php#L1221
PHP の組み込み関数は例外を起こさず false を返して失敗を伝えるのが多いですからね
昔はその仕様に不満を感じて例外を投げてくれればいいのにと思ったこともあります
でも最近は逆で例外を投げられると catch が面倒なので return として成功と失敗を返してほしいと思ってます
JavaScript だと PHP と違いエラーが throw されるので自分でラップしてエラーでも return するようにしたりしてたりします
非同期関数だと 「.catch(error => null)」 とか 「.catch(error => ({ error }))」 で済むのに同期関数は try-catch 句が必要で const と相性が悪くてイライラしたり……
言語によっては例外というものがなく 成功/失敗という型の中に結果や原因を保持してそれを return するものもありますし PHP のこれはこれでいいものだと思います
例外が起きても ちゃんと作るなら生のエラーメッセージをそのまま使わずユーザーが見れる形のメッセージに置き換えたりといった処理が必要で catch して書き換えて 再 throw したりするなら throw はユーザーがするものとしてライブラリレイヤーでは想定されたエラーでは例外は起こさないのほうがいいのかなと思ったりです