задание параметров в метод

159
08 марта 2022, 11:40

существует метод со своими условиями

public function validate_field($required=NULL,$field=NULL,$name_field=NULL, $min=NULL, $max=NULL){
       if($min=2 AND $required=='required' ){
            return '123';
        }
        if($name_field=='123' AND $min=2 AND $max=5){
            return '456';
        }
    }

обращаясь к нему:

echo    $validation->validate_field($required='required',$min=2);
 echo       $validation->validate_field($name_field='123',$min=2,$max=5);

return возвращает только 123 (первое условие), как задавать методу параметры, что бы условия выполнялись?

Answer 1

1 Ваш метод ожидает 5 аргументов. Если вызывать такой метод и передавать меньшее число аргуметнов, интерпретатор будет подставлять переданные данные слева-направо. При таком вызове: $validation->validate_field($required = 'required', $min = 2); в метод будут передоваться первые два аргумента validate_field($required=NULL,$field=NULL остальные передаюстя со значениями по-умолчанию.

2 Такая форма записи $validation->validate_field($required = 'required', $min = 2); избыточна и беcсмыслена. Что происходит - сначала вы в переменную $required записываете строку 'required', после передаёте эту переменую в метод в качестве аргумента. Названия же переменных при вызове метода и при инициализации никак не всязаны.

3 Ваша основная ошибка тут if($min=2 AND $required=='required' ){, т.к. $min=2 это присваивание значения, то в конструкции if оно всегда true. Скорее всего вы хотели написать так:

 if ($min == 2 AND $required == 'required') { 
 if($name_field == '123' AND $min == 2 AND $max == 5) {
Answer 2
$validation->validate_field($name_field='123',$min=2,$max=5);

Это тоже самое, что и $validation->validate_field('123',2,5,NULL,NULL); Тоесть, внутри функции у вас доступны эти переменные, с данными.

$required='123';
$field=2;
$name_field=5;
$min=NULL;
$max=NULL;

Чтобы условие второе выполнилось, параметры должны передаваться последовательно, согласно порядку. То бишь так $validation->validate_field(NULL,NULL,'123',2,5);

READ ALSO
Отправить POST из js в php

Отправить POST из js в php

Не понимаю в чём проблемаЗадача такая: Нужно отправить из js данные в php и вывести их

87
вызывать определенный массив из метода

вызывать определенный массив из метода

Есть функция валидации полей, для каждого поля свое правило в массивах, как эти массивы определить к примеру в метод rules и с него потом доставать...

108
Добавить в Viber-bot кнопки ответа

Добавить в Viber-bot кнопки ответа

Использую Viber-bot и phpКаким образом добавить кнопки ответа под постом каждого из сообщений отправленным ботом? Аналогично Telegram

125
Замена с помощью регулярных выражений

Замена с помощью регулярных выражений

Как с помощью регулярного выражения в PHP преобразовать строку вида hello @nickname (User)! в hello <a href="examplecom/nickname">User</a>!?

72