質問: ['red', $e->getMessage()]; } // リソースを解放 if (isset($msg) && is_resource($img)) { imagedestroy($img); } if (isset($dst) && is_resource($dst)) { imagedestroy($dst); } } } ``` ### 試したこと ### 補足情報(FW/ツールのバージョンなど)
回答: 前提として、PHPは関数名などを変数にして呼び出すことが可能です。 ``` > 画像アップロードのバリデーションクラスとして定義して使う場合 > > > 既に画像アップロードまで行ってしまっていることになりますので、このままバリデーションだけで使うのは難しいのではないでしょか。 どこまでを「バリデーション」とするかによりますが、ファイル生成はバリデーションを行った後のものと考えるのが通常なので、例えば、「ファイルが画像か」「サイズ超過していないか」「指定した画像拡張子か」のチェックまでを切り出してバリデーションとすることになるのではないでしょうか。 あとは画像をきちんと移動できるかどうかなので異常系に分類されると思います。 > > 保存したファイルのファイルパスをphpファイルで呼び出したい場合 > > > 「保存した」なので「移動済み」でしょうか、それとも「テンポラリファイル」でしょうか。 それによって違います。移動済みなのであればハッシュしているとはいえシステム側から払い出したファイル名です。如何様にもできますよね。 それに「どこでどう使いたいか」によります。 前述の「バリデーションのため」であればわざわざパスを取り出す必要はあません。$_FILEはスーパーグローバル変数なのでPHPプログラムのどこからでも呼び出せます。 「ファイルが画像か」「サイズ超過していないか」「指定した画像拡張子か」くらいならtmp_nameからチェックできます(すでに記事のコードではそのように対応されてますよね) 提示の記事のコードはそれ1つで全て出来上がっているものなので、 そこから何とか切り出そうとすると整合性を取るのが難しくなると思います。 それなりに技術力と経験と発想、ロジックが必要になります。 まずは参考にとどめ、このコードのまま挙動確認・デバッグを行って身にしていってはどうでしょうか。