Приветствую всех читателей блога. Вспоминаем, что было в прошлом уроке по PHP. Этот урок будет последним в этом 2015 году и он будет о том, где можно применять чудесный оператор как «Оператор отрицания». И хочу огорчить, что о функцию isset() и ее применения я напишу в недалёком будущем, если все лепить в этот урок – он станет долгим и многие просто не осилят дочитать его до конца.
«Оператор отрицания» (имеет вид « ! » ) — это оператор, который превращает TRUE в FALSE и наоборот. У некоторой литературе встречается имя «знак обратной функции». Возьмем наш обработчик отправки писем sender_mail.php. В нём есть такое выражение:
1 | if (empty($subject) || empty($body_text)) {… |
Мы спрашиваем, у переменной $subject и $body_text, пустые ли они? Если ответ – да, то есть когда функция возвращает TRUE, тогда идет исполнение кода в первых скобках {…}. Если мы поставим оператор отрицания, тогда мы будем спрашивать так:
1 | if (!empty($subject) || !empty($body_text)) {… |
Если мы используем оператор обратной функции, тогда нам нужно менять логический оператор OR ( || ) на AND ( && ). В недалёком будущем я напишу статью об основных логических операторах PHP. В этом случает функция спрашивает у переменной: «Есть ли у тебя данные?» Если функция возвращает – да (TRUE), тогда будет выполнен код в первых скобках.
Вы скажете, какая же разница, и в первом примере и во втором при возврате TRUE будет выполняться код в первых скобках? Давайте разберемся. Внимательно прочтите, какой вопрос мы просим задать функцией к переменной? В первом – мы спрашивает на наличие ПУСТОТЫ, а во втором – на наличие ДАННЫХ в переменной. Что для вас важнее – узнать пустые ли переменные пришли с формы или с данными? Правильно! Нам нужны данные, а не пустота. Конечно, бывают случаи, что вполне хватает проверки на пустоту, но это уже практика и подходом к решению задач очень много. Чем больше у вас опыта – тем проще и качественно вы решаете поставленных переда вами задачи.
Давайте используем выше обузданные знания и применим их на практике. На примере файла sender_mail.php я покажу, как можно использовать оператор отрицания и это усовершенствует нашу мини систему управление сайтом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php //Записываем данные пришедшие из формы в переменные $subject = $_POST['subject']; $body_text = $_POST['body_text']; // Пусты ли обе переменные? if (empty($subject) && empty($body_text)) { echo 'Вы не указали тему и текст сообщение!<br />'; }; // Пуста ли $subject и с данными $body_text? if (empty($subject) && (!empty($body_text))) { echo 'Вы не указали тему сообщение!<br />'; }; // С данными ли $subject и пуста ли $body_text? if ((!empty($subject)) && empty($body_text)) { echo 'Вы не указали текст сообщение!'; }; if ((!empty($subject)) && (!empty($body_text))) { //Подключаемся к БД $connect = mysqli_connect('hostname', 'login', 'pass', 'BDname', ) or die ('Нет подключения к базе данных'); //Записываем запрос к БД в переменную $query = "SELECT * FROM store_list"; // Выполняем отправку запроса в БД и выводим результат функции $result = mysqli_query($connect, $query) or die ('Что то пошло не так...'); while ($row = mysqli_fetch_array($result)) { mail ($row[email], $subject, $body_text); echo 'Письмо успешно отправлено подписчику: ' . $row[first_name] . ' ' . $row[last_name] . ' на адрес: ' . $row[email] . '<br />'; }; // Закрываем соединение с БД mysqli_close($connect); }; ?> |
Пересмотрите это код. Изменений там не много, но логика исполнения уже совсем другая и плюс к этому, мы указываем вывод ошибки, какое конкретно поле осталось не заполненным. И все это сделано на одной функции empty(). Оператор отрицания можно применять и ко многим другим функция, если это нужно.
Второе домашнее задания для вас. Внесите такие же изменения в другие файлы уроков add_mailer.php и dell_mailer.php используя оператор отрицания.
На этом урок окончен, с вами был ProIN, до встречи в новом 2016 году!
Скачать файлы урока:
sender_mail.php 1 Kb