Cooking PHP. Программирование с Екатериной
172 subscribers
12 photos
3 videos
1 file
25 links
Учим php на кухне с нуля 🙄

Сложно ли девушке работать программистом?
Офисные заметки, размышления о работе и о жизни.

Более 20 лет в ИТ, более 15 в php
Download Telegram
Смотрим видео и представляем его в виде кода.

У нас есть массив овощей:

<?php

$vegetables = ['перец', 'баклажан', 'баклажан', 'огурец', 'помидор', 'помидор'];

?>

Мы должны пройтись по этим овощам (элементам) в цикле, порезать все эти овощи, при этом надо учесть, что огурец в этом салате нам не нужен, перец надо почистить, а баклажаны и перцы запечь.

Выглядеть это будет так (схематично, такой кухонный реализм я в виде кода не писала еще):


<?php

foreach($vegetables as $vegetable)
{
if($vegetable == 'огурец')
{
continue; //если элемент цикла - огурец, пропускаем его, нам он не нужен, переходим к следующему элементу
}
if($vegetable == 'перец')
{
cleanup($vegetable); //если элемент цикла - перец, вызываем функцию, которая почистит его
}
cut_vegetable($vegetable); //все элементы порезать (кроме огурца, мы его пропустили) - вызвали функцию, которая режет

if($vegetable == 'баклажан' || $vegetable == 'помидор')
{
bake($vegetable); //если элемент массива помидор или баклажан, то запекаем
}

}
?>

В таком раскладе что-нибудь понятно?
Или лучше на цифрах и стандарных примерах из учебников показывать?

И конкретнее.
Что такое массив - понятно?
А цикл и для чего он? (foreach)
А условия? (if ... else)

#cookingphp
👍2
Когда только начинаешь изучать php, вроде, синтаксис весь этот понятен приблизительно, но непонятно, что с этим дальше делать.

Ну вот получили мы какие-то данные, а дальше что? Красивые странички мы получаем с помощью html, используя html-верстку, а при чем тут php?
Мы можем отдать результаты работы php в html-шаблон, например, выборку из базы.

В реальной разработке используются шаблонизаторы (впрочем,
необязательно), мы пока на простом примере посмотрим, как сочетается php с html. И без базы. Зададим переменные прямо в шаблоне. Просто для иллюстрации, как это будет.

<?php
$title = 'Про мышей';
$a = 'а котята ещё выше.';
$b = 'а котята кувырком.';
$c = 'а котята ха-ха-ха.';
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Про мышей</title>
</head>
<body>
Тише, мыши, кот на крыше,<br>
<?php echo $a?><br>
Кот пошёл за молоком,<br>
<?php echo $b?><br>
Кот пришёл без молока,<br>
<?php echo $c?>
</body>
</html>

Чтобы не заниматься разворачиванием и настройкой php, но попробовать что-то
попрограммировать, запомните и воспользуйтесь ссылкой:https://www.w3schools.com/php/phptryit.asp?filename=tryphp_compiler

Скопируйте туда код и посмотрите, что получится.

Вместо <?php echo $c?> можно использовать <?=$c?> в хтмл-шаблонах, это будет эквивалент.

Кто попробовал? Понятно, что происходит в этом примере?
3
Сложение строк в PHP

Для сложения (конкатенации) строк используется оператор точка:
<?php
$str = 'abc' . 'def'; // складываем две строки
echo $str; // выведет 'abcdef'
?>

Строки также могут хранится в переменных:
<?php
$str1 = 'abc';
$str2 = 'def';
echo $str1 . $str2; // выведет 'abcdef'
?>

Можно также складывать переменные и строки:
<?php
$str1 = 'abc';
$str2 = 'def';
echo $str1 . '!!!' . $str2; // выведет 'abc!!!def'
?>

Пусть две строки хранятся в переменных, а при их сложении мы хотим вставить между ними пробел. Это делается так:
<?php
$str1 = 'abc';
$str2 = 'def';
echo $str1 . ' ' . $str2; // выведет 'abc def'
?>

Объединение через пробел, кстати, очень часто используется в разработке.

В php много функций для работы со строками, например:

Количество символов строки можно найти с помощью функции mb_strlen:

<?php
echo mb_strlen('абвгд'); // выведет 5
?>

Полный список таких функций можно найти тут:
https://www.php.net/manual/ru/ref.strings.php

А кто хочет потренироваться, используя уже совершенно по-настоящему документацию (а это и есть основной навык программиста), может выполнить такую задачу.
У нас есть массив:

<?php
$array = ['Иванов', 'Иван', 'Иванович'];
?>

Как его превратить в строку "Иванов Иван Иванович'?
В документации есть функция, которая это делает, кто справится?

Тренироваться в результате можно тут:

https://www.w3schools.com/php/phptryit.asp?filename=tryphp_compiler

#урокиphp #синтаксисphp
🔥21
И теперь перейдем уже к более интересным вещам.

Функции, которые мы создаем для собственных потребностей, не те, что предлагает нам php из своих, а наши собственные.

Функции – вещь довольно простая.

Она представляет собой кусок кода, который принимает определенные параметры и на выходе возвращает какой-либо результат. Можно написать функцию один раз, а затем использовать её в различных местах. Таким образом вам не нужно будет дублировать код, если что-то нужно сделать дважды, или трижды, или сколько угодно раз.

Функция создается с помощью команды function. Далее через пробел следует имя функции и круглые скобки, в которых пишется какой-то код:

function имяФункции (аргумент1, аргумент2)
{
какие-то действия;
return результат;
}


Но только названия, конечно, по-английски.
аргумент1 и аргумент2 - некие переменные.

У функции обязательно должно быть имя. У всех функций должны быть разные имена и имя вашей функции не может называться так же, как и встроенная в PHP функция. Аргументов может быть сколько угодно, в том числе и 0. Функция может что-то возвращать, для этого перед результатом пишется слово return.


Давайте посмотрим на каком-нибудь примере.

Сделаем функцию с именем func, которая при своем вызове будет выводить на экран восклицательный знак:
<?php
function func() {
echo '!';
}
?>

Пример:

<?php

function getSum($x, $y)
{
return $x + $y;
}

$a = 5;
$b = 10;

echo getSum($a, $b) . '<br>';
echo getSum(-3, 4);

Можете сказать, что выведется на экран?

А вот еще пример, воспользуемся функцией php date(), чтобы узнать текущую дату.

<?php

// Определяем функцию
function whatIsToday() {
echo "Today is " . date("d.m.Y");;
}
// Вызываем функцию
whatIsToday();
?>

Понятно, что такое функции и зачем они?

#урокиphp #синтаксисphp
🔥3
Друзья, я была расстроена, что почти никто не попробовал сделать задания из прошлого поста.
Хоть я и говорила, что надо будет только читать, все же надеялась, что вам будет интересно попробовать практику. И задать вопросы, если что-то непонятно.
Но! На вопросы-то хотя бы отвечайте. Понятно, непонятно, что непонятно. Без заданий, хотя бы в плане теории.

Без обратной связи продолжение становится бессмысленным для меня.
2
Сегодня поговорим о формах. По сути, программирование для сайта - это 80% обработка форм. Пользователи или админ вводят данные в форме, php их принимает.

Самое главное правило для любых форм и любых данных: мы должны проверять все, что приходит на сервер.

Если мы ожидаем число - то проверка на число. Если мы ожидаем емейл, то проверяем формат емейла.

Современные фреймворки массу проверок берут на себя, но тем не менее, разработчик должен все время об этом помнить, чтобы не пришел вредитель и не отправил вредоносный код, который положит вам сайт и сольет базу данных.

Сперва снова обратимся к html и нарисуем простую форму. Html нам особо не нужно знать, но базовые вещи нужно. А формы - самые пребазовые)

Форма открывается тегом <form> и закрывается </form>
Внутри будут поля.

Одним из простейших примеров формы может быть форма авторизации:

<form action="/index.php" method="POST">

Пожалуйста, введите емейл и пароль:<br>
<input type="text" name="email" value="" placeholder="Ваш емейл" required><br>
<input type="password" name="password" value="" placeholder="Ваш пароль"><br>
<input type="submit" value="Войти на сайт">

</form>

Если создать html файл и вставить в него код из примера выше, то в браузере такой файл отобразится как html страница с картинки

#формы
1
В этой форме есть два поля для ввода и одна кнопка. Все эти элементы строятся самим браузером.

Во время отправки формы все поля внутри формы передадут свои значения на страницу, адрес которой указан в атрибуте action="...".
Способ передачи данных указывается в атрибуте method="...".

<input> - этот тег может отображать различные элемены в зависимости от значения атрибута type="...". На третьей строке он используется как поле для ввода текста type="text". А на четвёртой стройке он используется для ввода пароля type="password".
Отличие типов "text" от "password" в том, что в поле для ввода пароля все символы скрываются, заменяясь на звёздочки или точки.

В конце третьей строки есть атрибут required. Если попытаться отправить форму (в нашем случае
нажать на кнопку "Войти на сайт") без заполнения этого поля, то форма не отправится и выдаст предупреждение.

Понятно, как выглядит форма с точки зрения html?

А дальше посмотрим подробнее, что будет делать php.

#формы
2
Теперь попробуем разобраться, как же в PHP правильно принимать данные, которые отправлены через HTML формы.

У тега form есть атрибут action, который содержит относительную или абсолютную ссылку на страницу, куда будут передаваться данные из формы. В нашем случае данные будут переданы на страницу /auth.php, которая находится в корневой папке сайта.

Передавать данные через форму можно двумя методами, которые называются POST и GET.
Если опустить технические детали, то при GET передаче все данные формы попадут в адресную строку браузера. При POST данные будут скрыты и не появятся в адресной строке.

Учитывая, что в нашем примере передаётся логин и пароль пользователя, данные лучше не передавать в адресную строку. Поэтому в примере стоит method="POST". Если же передавать такие секретные данные через адресную строку, то все серверы, через которые пройдёт ваш запрос, увидят эти секретные данные. Поэтому чаще всего в формах используют именно POST метод.

Теперь давайте разберём, что же должно находиться в файле /auth.php, который будет обрабатывать полученные из формы данные. Придумаем простейшую функцию обработки данных формы:

<?php
$email = $_POST['email'];
$password = $_POST['password'];

if($email == 'admin@ya.ru' && $password == '123456')
{
echo 'Вы успешно авторизованы';
}
else
{
echo 'Пароль или мэйл введены неверно';
}
?>
В первых двух строчках примера переменным $email и $password присваиваются значения равные значениям элементам массива $_POST.

Как можно догадаться, это именно тот массив, который хранит все POST переменные, переданные на страницу. Если переменных не было передано, то $_POST - это пустой массив. Ключи массива $_POST - это названия полей формы. То есть то, что стоит в атрибуте "name=" ... "". А значения элементов массива - это то, что стоит в атрибуте "value=" ... "".

Если бы мы использовали в примере не POST, а GET метод, то нужно было бы писать $_GET вместо $_POST. $_GET - это точно такой же массив, как и $_POST, но он содержит GET переменные (переменные из адресной строки браузера). Если GET переменных нет, то массив $_GET будет пустым.

Существует ещё массив $_REQUEST. Он содержит как данные из $_POST, так и данные из $_GET. Поэтому вместо $_POST['email'] или $_GET['email'] можно писать $_REQUEST['email'].

Наш пример утрирован - такая форма может работать для авторизации только одного пользователя. Потому что значения емейла 'admin@ya.ru' и пароля '123456' не меняются. Но если использовать базу данных, то можно авторизовать разных пользователей через одну форму, находя комбинацию мэйла/пароля в базе.
Но тогда помним про нормальную валидацию (проверку) данных и то, что пароль в базе лежит в зашифрованном виде.

#урокиphp #синтаксисphp #формы
1
Друзья, мой последний пост был в августе, но получилось так случайно.

Сперва я повисла, потому что увидела, что давать задания вот так вот в тг, как я делала, совершенно бессмысленно в плане обучения, даже наоборот, скорее отпугнет. Потому что если уж становиться разработчиком, нужно всерьез погрузиться в эту тему и, поначалу, как следует впахнуть. Сперва будет "ничего непонятно", потом "что-то немного вырисовывается смутно", и только потом более-менее понятно.

Пока у вас нет серьезной мотивации (например, очень сильного желания, как было у меня - я именно хотела стать программистом, мне казалось это очень круто и по деньгам приятно ИЛИ когда вы уже заплатили за обучение и вам просто денег жалко, да еще и преподаватель пинает), новую профессию не освоить.

И еще, я поняла, что была не права, когда говорила, что в программировании нет ничего сложного. Я просто забыла, что поначалу все кажется сложным. Да и сейчас такие моменты бывают, если честно. Ну а что делать, глаза боятся, руки делают. Все равно все это вполне можно освоить. Если есть мотивация)

Так вот, я повисла, потому что не понимала, что дальше делать с каналом, то ли просто байки из рабочей жизни рассказывать, то ли закрыть его вовсе, но осенью жизнь порядком выбила меня из колеи, и мне стало не до канала.
Зато я лишний раз заценила прелести наемной работы (в отличие от работы на себя, чем я тоже занимаюсь параллельно): месяц полностью оплаченного больничного и никаких вопросов. Еще и плановая премия никуда не делась))

Вобщем, никакого решения по каналу я не приняла, а тут недавно мне предложили написать обучающий курс в рамках одного проекта. Обучающий курс - это серьезно, это новая профессия (на мой вкус, офигенная, хотя, конечно, не всем это подходит), для меня это значит большой объем работы.
И я почти уже отказалась, как подумала, вдруг среди моей аудитории есть желающие поучиться именно у меня. Если бы набралась группа, то я бы провела такой курс.

Не буду особо вас сейчас этим грузить, подробнее написала тут >>
Кому интересно, пишите в личку @egoleva

А в комментариях пишите, оставляем канал или эта тема перестала быть актуальной.

И еще. Я думаю, может, провести вебинар, где я подробно расскажу, чем занимается бэкенд-разработчик, обсудим, кому подойдет эта профессия, а кому нет, вы зададите свои вопросы.
Нужен вебинар (бесплатно)? Поставьте ❤️, чтобы я знала, кому интересно.
22
Девочки, как насчет завтра? Завтра с утра в районе 11-12 проведу вебинар, удобно? Поставьте лайк, если придете.
Готовлю площадку.
(Впаривать курс или что-либо еще не буду, это не продающий вебинар, просто расскажу о профессии изнутри, что именно делает веб-программист начального и около-среднего уровня и кому подойдет такая работа)
👍4👏31
Встречаемся завтра в 11 утра:
https://kfnm1r5a.ktalk.ru/erpd5hoq7ams
Видео, аудио можете не включать, будет чат, можно с компьютера или мобильного телефона зайти.
Запись не обещаю, как получится, новая площадка, пока неизученная.
1👍1
Через 13 минут начинаем https://kfnm1r5a.ktalk.ru/erpd5hoq7ams
Что делает веб-программист и кому может подойти такая профессия.
👍2
Media is too big
VIEW IN TELEGRAM
Вебинар о профессии, понравится и подойдет ли вам пррфессия веб-программиста.
Почему-то нет моего видео, но местами смотрите, видео экрана есть.
И мой гриппозный голос 🤣
5🔥4
Захарова презентует проект, который я писала недавно.
👍7🔥4👏41🤩1
И это ужасно 🙈😂
Если бы я знала уровень, то отнеслась бы посерьезнее.
А то выглядело все как "проект нам нужен до обеда, быстро пилим".
Ну потом, конечно, еще время было, но очень важно не потом косяки править, а именно заранее предусмотреть время на планирование архитектуры. А это не всегда заказчик понимает.

И еще не лучше, когда 100500 правок вносятся потом по ходу.
Вернее, это неплохо, если оставляют время на хорошее тестирование. Но это редко бывает.
👍4
Forwarded from Алена
Какой проект???
https://may9.aif.ru

Если честно, с точки зрения программирования не особо интересный, простой сайт.
Но интересный с точки зрения журналистской работы и, в целом, темы.
👍72🥰1👏1
Самый сложный проект в моей жизни…

Вчера я вам показала простой проект ⬆️, подобные сейчас можно и в конструкторе делать (но не всегда).

А в самый сложный я вляпалась случайно, когда меня взяли на работу, отсобеседовав по телефону без всяких тестов, на зарплату больше текущей раза в два.

Это была соцсеть.

Наш инвестор искренне хотел уделать фейсбук.

Деньги лились рекой - один только домен сайта стоил миллион (!) долларов.

Соцсеть должна была покрыть весь мир так, чтобы любой индус мог общаться, скажем, с арабом, или человеком любой другой национальности благодаря встроенным переводчикам с любого языка на любой (тогда гугл-переводчика, вроде, еще не было или был в самом начале развития).

У соцсети уже были миллионы пользователей, и это реально было сложно - я училась разработке высоконагруженного проекта, когда, например, один пользователь в чате пишет сообщение другому - и тот другой видит это мгновенно без перезагрузки страницы. И так делают сразу миллионы человек, но задержек быть не должно.

Это все уже тогда тоже было, сейчас тем более, но когда мы этим пользуемся, то не задумываемся ни о серверах, ни о мощностях, ни о том, что насколько сложно разрабатывать такие системы именно из-за огромного потока одновременно, ежесекундно производящихся операций.

Так вот, я работала и обучалась прямо на месте, через ошибки и боль, как и всегда, и радовалась, что я хотя бы не дизайнер и не фронтендщик, потому что интерфейсы тоже должны были быть на всех языках, а например, арабский интерфейс - это все то же самое, только справа налево 😎

К сожалению, уделать фейсбук не удалось.
Самый дорогой проект из тех, где я работала, где реально не было проблем с вложениями в сотрудников, в рекламу, во все, что угодно - был закрыт.

После него я никогда не ругала Госуслуги, даже в самом начале, когда они глючили на каждом шагу. Это реально сложно, писать подобную систему. И в первую очередь, из-за нереальных нагрузок.
Такого уровня проектов у меня больше не было.
🔥11👍62❤‍🔥1