PHP

PHPでメソッドチェーンを使う

画像アップロード系の記事を書いた時にメソッドチェーンで実装したら便利だったのでメモ代わりに投稿

利用する場合にコードが読みやすくなるので良いですね


動作環境

PHP 7.1.20

※たぶん5系全般でも動きます


クラスの作成

returnで自分自身を返せばOK(setterに実装すると使いやすい)


photoUploader.php

<?php

/**
* Class PhotoUploader
*/

class PhotoUploader
{
private $filesystem;
private $path;

/**
* PhotoUploader constructor.
* @param Filesystem $filesystem
*/

public function __construct(Filesystem $filesystem)
{
$this->filesystem = $filesystem;
}

/**
* @param $path
* @return $this
*/

public function setPath($path)
{
$this->path = $path;

return $this;
}

/**
* @return String
*/

public function getPath()
{
return $this->path;
}

/**
* @param $file
* @return bool
*/

public function upload($file)
{
// upload処理
}



利用サンプル


sample.php

<?php

$filesystem = new Filesystem();
$uploader = new PhotoUploader($filesystem)

$path = '/tmp/test.png'

// こんな感じで使う
$uploader->setPath($path)->upload($file);