Задать вопрос
ibr_98
@ibr_98

Как сделать так, что бы не выбрасывало ошибку, когда я не указал один из аргументов функции?

Всем привет!
вот этот код выдает ошибку, потому что я не указал второй аргумент функции, как сделать так, что бы он не выдавал ошибку?
ps просто пишу фреймворк для работы с vk api, там бывают такие моменты, когда например нужно указать только $user_id или только $chat_id
function func($user_id, $chat_id) {
  return $user_id;
}
echo func($user_id = 10) 
//ошибка:
//Warning: Missing argument 2
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@sidni
Php Developer
function func($user_id, $chat_id=0) {
  return $user_id;
}
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
там бывают такие моменты, когда например нужно указать только $user_id или только $chat_id

Не забываем про SOLID - если у вас есть функция для которой достаточно только $user_id - у неё и должны быть в аргументах только $user_id

Формальный ответ на вопрос: или так как написал sidni или если много аргументов что-то в стиле
function func(array $options) {
  return $options['user_id'];
}

echo func( ['user_id' => '111'] );


но тут легко запутаться в переменных и в итоге вы придете к
trait init {
    function __construct(array $data) {
        foreach ($data as $key => $value) {
            if (property_exists(__CLASS__, $key)) {
                $this->$key = $value; 
            } else {
                throw new \Exception($key . ' undefined');
            }
        }
    }
}

class FuncOptions  {
    use init;
    public $user_id;
    public $chat_id;
}

function func(FuncOptions $options) {
  return $options->user_id;
}

echo func(new FuncOptions(['user_id' => '111']) );


а там откроете для себя фабрики и прочие паттерны...

так что лучше пишите простые и понятные функции))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы