php로 일등석 모음집 만들기
개요
php로 일등석 소장품을 만들고 싶어도 배열 내용의 유형은 언어 규범에 얽매이지 않는다.
가변 길이 변수를 사용하면
foreach
에서 배열 내용을 일일이 확인할 필요가 없다.다음은
Account
류의 제1종 수집Accounts
의 실현을 예로 들 수 있다.모드 1: 구조기의 매개 변수를 가변 길이 변수로 설정하여 유형을 제시합니다
왜냐면 Aray에서 쉽게 만들 수 있으니까
fromArray
방법도 만들어지고 있고요.class Accounts
{
/** @var Account[] */
private array $accounts;
public function __construct(Account ...$accounts)
{
$this->accounts = $accounts;
}
static public function fromArray(array $accounts): self
{
return new self(...$accounts);
}
public function add(Account $account): self
{
return new self(...array_merge($this->accounts, [$account]));
}
}
$account1 = new Account('ichiro');
$account2 = new Account('jiro');
$account3 = new Account('saburo');
$accounts = new Accounts($account1, $account2, $account3);
// もしくは
$accounts = Accounts::fromArray([$account1, $account2, $account3]);
모드2: 가변 길이 변수를 매개 변수로 하는privvate 방법을 정의하고 이 방법을 통해 값을 설정합니다
class Accounts
{
/** @var Account[] */
private array $accounts;
public function __construct(array $accounts)
{
$this->setValue(...$accounts);
}
private function setValue(Account ...$accounts): self
{
$this->accounts = $accounts;
}
public function add(Account $account): self
{
return new self(array_merge($this->accounts, [$account]));
}
}
$account1 = new Account('ichiro');
$account2 = new Account('jiro');
$account3 = new Account('saburo');
$accounts = new Accounts([$account1, $account2, $account3]);
모드 3: 가변 길이 변수를 매개 변수로 하는 무명 함수를 정의하고 이 함수를 통해 값을 설정합니다
비록 방법은 두 번째 모델과 같지만 구조기 안에서 간결하기 때문에 나는 개인적으로 비교적 좋아한다
class Accounts
{
/** @var Account[] */
private array $accounts;
public function __construct(array $accounts)
{
$set_value = function (Account ...$accounts) {
$this->accounts = $accounts;
};
$set_value(...$accounts);
}
public function add(Account $account): self
{
return new self(array_merge($this->accounts, [$account]));
}
}
$account1 = new Account('ichiro');
$account2 = new Account('jiro');
$account3 = new Account('saburo');
$accounts = new Accounts([$account1, $account2, $account3]);
Reference
이 문제에 관하여(php로 일등석 모음집 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tasteck/articles/94cad3eea8c99a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)