Chapter 08

[PG] Use DTOs

at yasu
at yasu
2022.01.12に更新
このチャプターの目次

極端に引数が多くなると見づらくなり、使う変数が多くなります。
これにより混乱を起こしやすくなるので、構造体を作成してどうにかやりくりをする方法があります。

英語だと Data Transfer Objects と言われるみたいです。

参考: Use Data Transfer Objects (DTOs). Samuel Štancl
-- twitter.com

✗ woozy

public function log(string $message, $url, $route_name, $route_data, $campaign_code, $traffic_source, $referer, $user_id, $visitor_id, $timestamp)
{
	...
}

○ best

public function log(Visit $visit)
{
	...
}

class Visit {
	public string $message;

	public string $url;
	public ?string $routeName;
	public array $routeData;

	public ?string $campaign_code;
	public array $traffic_source = [];

	public ?string $referer;
	public ?int $user_id;
	public ?int $visitor_id;

	public \DateTime $timestamp;
}