«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2021/03/05 15:01:46  №1958434 1
Ответы: >>1958465
Аноним 2021/03/05 15:48:52  №1958465 2
>>1958434

Нарушение разделения ответственности. Функция проверки должна только проверять данные формы, а не заниматься выводом сообщений и тем более убивать скрипт. Она должна вернуть результат проверки, а что с ним будут делать - это не ее дело.

Завтра ты захочешь сделать, чтобы при ошибке выводилась форма с введенными значениями, и эту функцию придется переделывать. А вот если ее сделать, как я написал, то не придется.
Ответы: >>1958479
Аноним 2021/03/05 16:04:26  №1958479 3
val.jpg (47, 517x616)
616x517
Ответы: >>1958481 >>1958499
Аноним 2021/03/05 16:09:02  №1958481 4
>>1958479
> trim($login)
У тебя trim вникуда делается, сама переменная $login после trim останется неизменной. Нужно писать так $login = trim($login);

> if ($login==false)
Можно убрать строчку сверху и написать компактнее:
if (!checkLogin($login)) {
...
}
Ответы: >>1958496
Аноним 2021/03/05 16:18:04  №1958496 5
>>1958481
вот у меня еще есть 3 формы.
можно чтобы сокр код
сделать проверку этих форм через OR в одну строку
типа
if (!checkLogin($login) or !checkCountry(x) or !checkPassword(y)) {
не валидно }
Ответы: >>1958501
Аноним 2021/03/05 16:21:00  №1958501 6
>>1958496

Будет лучше написать единую функцию для проверки всех полей сразу. Чтобы она принимала на вход список полей и возвращала список ошибок в них.
Ответы: >>1958592
Аноним 2021/03/05 17:39:51  №1958592 7
>>1958501
не взлетела попытка
Ответы: >>1958648 >>1958867
Аноним 2021/03/06 07:46:18  №1958867 8
>>1958592

Ты зачем-то создаешь переменные, которые никак дальше не используются. Вот смотри:

function x() {
return $a = "текст";
}

Эта строка создает переменную $a, записывает в нее значение "текст", затем возвращает его и выходит из функции. При выходе из функции переменная $a уничтожается. Зачем ее тогда было создавать? Нужно писать просто:

return "текст";

У тебя команда

return $errors[] = "текст";

создает массив, но возвращает она не массив, а строку "текст". Зачем создается массив, непонятно, так как он никак не используется и уничтожается при выходе из функции. Если ты хотел вернуть массив из 1 элемента, то надо писать так:

return ["текст"];

Хотя правильнее было бы сначала собрать все ошибки в массив и в конце функции вернуть его:

$errors = [];
$errors[] = "текст";
$errors[] = "текст";
return $errors;

Также, функции надо называть осмысленно. Не form(), а check_form(), validate_form().

Ответы: >>1958871 >>1959068
Аноним 2021/03/06 13:28:40  №1959068 9
>>1958867
а как извлечь извлечь из функ,если return['$login','$country','$password','$email'];?
Ответы: >>1959079
Аноним 2021/03/06 13:38:39  №1959079 10
>>1959068

Не понял вопрос. Извлечь что? Если тебе надо извлечь значения из массива, то можно писать либо:

$login = $array[0];
$country = $array[1];

Либо

[$login, $country, $password ] = $array;

Ответы: >>1959087
Аноним 2021/03/06 13:42:18  №1959087 11
>>1959079
но это массив в функции,просто так его оттуда не достать
делать через list()?
Ответы: >>1959096
Аноним 2021/03/06 13:48:46  №1959096 12
Ответы: >>1959102
Аноним 2021/03/06 13:53:59  №1959102 13
>>1959096
вот здесь хрен знает какая попытка
рядом попытка в ООП
Ответы: >>1959111
Аноним 2021/03/06 14:00:59  №1959111 14
>>1959102

В функции последний if очень странный, смотри сам:

- если массив ошибок пуст (ошибок нет), вернуть пустой массив
- если ошибки есть, то не вернуть ошибки, а вернуть массив с 4 строчками (зачем?)

Нужно было просто написать return $error и все. Зачем написан этот if?

Справа, увы, не ООП, а просто код со словом class. У тебя все сделано статикой. То есть ты не можешь, например, создать 2 объекта для 2 разных форм. И опять же, у тебя все вперемешку - и проверка данных, и вывод результата сделан вместе. Это не ООП.
Ответы: >>1959263
Аноним 2021/03/06 16:20:18  №1959263 15
>>1959111
а так ООП?
вроде работает
Аноним 2021/03/07 13:09:53  №1959901 16
>>1959263
Бросай это дело. Программирование явно не для тебя.
Впервые вижу, чтобы так долго безрезультатно вникали в основы кодинга
Аноним 2021/03/07 13:48:35  №1959915 17
>>1959901
>Впервые вижу, чтобы так долго безрезультатно вникали в основы кодинга
значит он читал не те книжки или вообще не читал, погромирование это не искусство, а ремесло, формошлепай и прибудет с тобой трудовой стаж.
нет бы вынести Design Patterns, чистый код мартина, полюбому есть специфический учебник по пыхе по типу "как перестать писать говно", в шапку.
Ответы: >>1959976
Аноним 2021/03/07 14:56:55  №1959976 18
>>1959915
читал,и не одну-в целом поверхностое говно для полных нулей,бер рил прожект.
приходиться много гуглить,но там 99% процедурный код-зато работает и понятней
Ответы: >>1960020
Аноним 2021/03/07 15:25:10  №1960020 19
>>1959976
>бер рил прожект
мне уже не надо, но если код с прода != хороший код, шаблоны проектирования хотя нужно иметь представление что это, тем более на собесе за них спрашивают в любом яп.
Ответы: >>1960031
Аноним 2021/03/07 15:35:31  №1960031 20
>>1960020
я не собираюсь работать кодером
Ответы: >>1960038
Аноним 2021/03/07 15:41:24  №1960038 21
>>1960031
ты потом откроешь свой же код и нихуя там не поймешь/надо будет его расширять а там пиздец.
Ответы: >>1960043
Аноним 2021/03/07 15:44:16  №1960043 22
>>1960038
я согласен в целом,что даже эстетически мой код всрат-но рабочая процедурщина.Короче,как вы говорите-херак и в продакшен
Ответы: >>1960052 >>1960281
Аноним 2021/03/07 15:48:24  №1960052 23
>>1960043
дело не в эстетике, процедурный код забит гвоздями и его проще переписать чем расширить, слишком абстрактный код перегружен и хрупок, одно изменение может потянуть пол кода.
Ответы: >>1960057
Аноним 2021/03/07 15:51:04  №1960057 24
>>1960052
>слишком абстрактный код
как раз хотел спросить про ООП,если много кода,много связей,как вы ориентируетесь в нем,особенно если там несколько слоев?
Ответы: >>1960066
Аноним 2021/03/07 15:58:49  №1960066 25
>>1960057
есть принципы проектирования solid, dry, kiss, grasp и другие, вот их и придерживаемся, когда несколько человек пишут в одном стиле то каша более понятная.
Ответы: >>1960537
Аноним 2021/03/07 19:33:53  №1960281 26
>>1960043
>даже эстетически мой код всрат-но рабочая процедурщина
Не, ты даже до рабочей процедурщины не дошел еще.
Аноним 2021/03/08 09:26:05  №1960537 27
>>1960086
Ну совсем без матана нет, нужно уметь складывать, вычитать, делить, умножать, иногда ещё в степени возводить и корни извлекать, но это редко. Ещё желательно синус от >>1960066
косинуса отличать, но не обязательно.
Ответы: >>1960573
Аноним 2021/03/08 10:26:10  №1960573 28
>>1960537
Ну на таком уровне знаю, конечно, не совсем же ебанат.
Даже производные смогу решить, лол.
>>1960562
Буду рад вновь увидеть червя тут, залетай