Slide 97
Slide 97 text
class FileStorage {
public function store(string $src, string $dir, array $options = []): void {
// $src を $dir ディレクトリに保存する処理
// $options には保存に関するオプションが含まれる
// $options が空でも問題なく動作する
// ...
}
}
class S3FileStorage extends FileStorage {
public function store(string $src, string $dir, array $options = []): void {
if (!isset($options['bucket']) || $options['bucket'] === '') {
throw new InvalidArgumentException('Bucket name is required!!');
}
// ...
}
}
// FireStorage を使ってファイルを保存する関数
function storeFile(FileStorage $storage, string $src, string $dir): void {
$storage->store($src, $dir);
}
storeFile(new FileStorage(), 'source.txt', 'awesome/dir/path'); // OK
storeFile(new S3FileStorage(), 'source.txt', 'awesome/dir/path'); // ERROR!