PHP
DOC
PHP Patterns
index.php #
<?php
// 1 config object
class FooConfig {
public int $param1 = 0;
public int $param2 = 0;
public string $param3 = '';
public string $param4 = '';
public bool $param5 = false;
public ?int $param6 = null;
public int $param7 = 0;
public string $param8 = '';
}
function Foo(FooConfig $config): void {
// Použití: $config->param1, $config->param2, atd.
}
// Použití
$config = new FooConfig();
$config->param1 = 1;
$config->param2 = 5;
$config->param3 = "aaa";
$config->param4 = "bbb";
$config->param5 = false;
$config->param6 = null;
$config->param7 = 22;
$config->param8 = "ok";
// 2 array
/**
* @param array{
* param1: int,
* param2: int,
* param3: string,
* param4: string,
* param5: bool,
* param6: mixed,
* param7: int,
* param8: string
* } $params
*/
function Foo(array $params): void {
// Použití: $params['param1'], $params['param2'], atd.
}
// Použití
Foo([
'param1' => 1,
'param2' => 5,
'param3' => "aaa",
'param4' => "bbb",
'param5' => false,
'param6' => null,
'param7' => 22,
'param8' => "ok"
]);
// 3 builder
class FooBuilder {
private array $params = [];
public function setParam1(int $value): self {
$this->params['param1'] = $value;
return $this;
}
public function setParam2(int $value): self {
$this->params['param2'] = $value;
return $this;
}
// Další metody pro nastavení parametrů...
public function build(): Foo {
return new Foo($this->params);
}
}
class Foo {
public function __construct(array $params) {
// Inicializace s parametry
}
}
// Použití
$foo = (new FooBuilder())
->setParam1(1)
->setParam2(5)
->setParam3("aaa")
->setParam4("bbb")
->setParam5(false)
->setParam6(null)
->setParam7(22)
->setParam8("ok")
->build();
// 4 named PHP 8+
function Foo(
int $param1 = 0,
int $param2 = 0,
string $param3 = '',
string $param4 = '',
bool $param5 = false,
$param6 = null,
int $param7 = 0,
string $param8 = ''
) {
// Funkční logika
}
// Použití
Foo(
param1: 1,
param2: 5,
param3: "aaa",
param4: "bbb",
param5: false,
param6: null,
param7: 22,
param8: "ok"
);
// Fluent
class FooParams {
private int $param1 = 0;
private int $param2 = 0;
private string $param3 = '';
private string $param4 = '';
private bool $param5 = false;
private $param6 = null;
private int $param7 = 0;
private string $param8 = '';
public function param1(int $value): self {
$this->param1 = $value;
return $this;
}
public function param2(int $value): self {
$this->param2 = $value;
return $this;
}
// Další metody pro ostatní parametry...
public function getParams(): array {
return [
'param1' => $this->param1,
'param2' => $this->param2,
// ...
];
}
}
function Foo(array $params) {
// Funkční logika
}
// Použití
$params = (new FooParams())
->param1(1)
->param2(5)
->param3("aaa")
->param4("bbb")
->param5(false)
->param6(null)
->param7(22)
->param8("ok");
Foo($params->getParams());