Сообщения

Сообщения за июль, 2021

PHP: значения по-умолчанию и типизация

Рассмотрим примеры, когда значения по-умолчанию в комбинации с указанием типов входных и выходных параметров функции могут ввести в заблуждение. Для начала рассмотрим такой сценарий: требуется разработать функцию, которая будет возвращать всегда целочисленное значение, а на вход принимает один параметр - тоже целочисленный. Заготовка: <?php class Product {     /**      * @param int $productId      *      * @return int      */     public function getStrangeProduct(int $productId): int     {         return $productId;     } } $obProduct = new Product(); При таком раскладе совершенно очевидно, что вызов var_dump($obProduct->getStrangeProduct(0)); вернёт целочисленное значение 0: /mnt/projects/sites/server.local/www/test-functions.php:16:int 0 Теперь представим, что ТЗ изменилось. Теперь нужно, чтобы функция имела значение по-умолчанию для входного параметра, когда функция вызывается без указания параметра. Так функция примет вид:     /**      * @param int|null $productId