Datový typ parametru funkce int|null
- radekBrno
- Člen | 61
Zdravím,
rozhodl jsem se dopsat datové typy k parametrům funkcí. V presenteru mám následující funkci, do které posílám hodnotu null (přidání záznamu) a nebo int (editace). Když jako datový typ uvedu int, tak operace končí chybovou hláškou „Argument 1 passed to class@anonymous::create() must be of the type integer, null given“. Jak se to dá elegantně vyřešit? Díky za radu.
protected function createComponentCategoryAddEditForm(): CategoryAddEditForm
{
$control = $this->categoryAddEditForm->create($this->categoryId);
return $control;
}
- Kamil Valenta
- Člen | 822
function f(int $arg = null) {
...
}
Nebo myslíš u returnu?
function f(): ?int {
if(...) {
return 1;
} else {
return null;
}
}
Editoval kamil_v (13. 1. 2020 23:49)
- Marek Bartoš
- Nette Blogger | 1280
f(int $arg = null)
Typ sám o sobě nedovoluje zadat null. To že jde null zadat, když je
současně výchozí hodnota, je historická záležitost, správně
je f(?int $arg = null)
Editoval Mabar (14. 1. 2020 0:05)
- h4kuna
- Backer | 740
Ono pokud si chceš vynutit parametr, tak ani výchozí hodnotu neudávej, jako že tam parametr vždy vyplňuješ. Ten otazník definuje že parametr je nullable.
create(?int categoryId)
Teď jen odhaduji. Ale pokud ten parametr je jen aby jsi vyplnil výchozí hodnoty pro formulář, tak si to můžeš udělat v presenteru v createComponent…, tím tu továrnu pro formulář očistíš a zůstane ti jen čisté vytvoření formuláře. Ale to je jen doporučení a detail, takže nechám na tvém vkusu.
Editoval h4kuna (14. 1. 2020 9:20)