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

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

Более 20 лет в ИТ, более 15 в php
Download Telegram
Ну что, продолжим знакомиться с синтаксисом php.

Как сравнили в комментариях, изучение языка программирования в чем-то схоже с изучением иностранного языка. Но на мой вкус проще.

PHP-скрипт - это перечень инструкций. Кстати, отделяются инструкции точкой запятой. Напомню, как это выглядит:

<?php echo "Какой-то текст"; ?>

Эта инструкция означает: выведи текст "Какой-то текст"

При разработке часто приходится комментировать код. Что такое комментарии?
Это текст, который не будет обрабатываться и выводиться.

Комментарии помечаются двойным слешом // или #
Многострочные отделяются так:
/* здесь комментарий */

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

<?php
echo "Это тест"; // Это однострочный комментарий в стиле C++
/* Это многострочный комментарий
ещё одна строка комментария */
echo "Это ещё один тест";
echo "Последний тест"; # Это комментарий в стиле оболочки Unix
?>

Здесь все понятно? Я каждый раз спрашиваю, чтобы самой понимать, насколько подробно расписывать, ну и чтобы еще раз объяснить, если непонятно, чем потом латать дыры)

Напишите в комментариях, что выведется на экран пользователю?

#урокиphp #синтаксисphp
5
Поскольку суть php - работа с данными, то основа языка - это типы данных.

Про типы данных чуть позже, а пока поговорим про переменные.

Что это такое и зачем нужно?

Помните, на математике в школе решали примеры вроде:

x+2=5
x=3

Вот х - переменная.

В программировании переменная – это величина, имеющая переменное (отсюда и название) значение.

Переменные в PHP представлены знаком доллара, за которым идёт имя переменной. Имя переменной чувствительно к регистру.

Правильное имя переменной начинается с буквы или символа подчёркивания и состоит из букв, цифр и символов подчёркивания в любом количестве.

Понятие переменной в программировании - одно из основных понятий, которое используется для хранения и обработки данных. Тип переменной определяет, какой вид данных она может содержать и как они будут обрабатываться.


<?php

$var = 'Боб';
$Var = 'Джо';
echo "$var, $Var";

$4site = 555;
$_4site = 7;

$var = 'Катя';

echo $var;

?>

Напишите, какие переменные верно записаны с точки зрения синтаксиса, а какие неверно, кто понял?
И что выведется в строке echo "$var, $Var"; ?
А что выведется в последней строке echo $var; ?

Я обещала, что думать будет не надо, только читать)
Могу сразу ответы писать.
Или все же задачки оставлять?

#урокиphp #синтаксисphp
4🔥1
Я вам все еще буду делать вбросы обычных постов, помимо обучающих. Изначально многие ради них подписывались, а не голову ломать 😃

Стоит ли учиться по книгам?

Вы часто спрашиваете, какие курсы лучше пройти. Здорово, что сейчас такой выбор обучающих курсов, уроков, материалов, платных и бесплатных.

С одной стороны, да. С другой – большой выбор имеет свои проблемы. Слишком сложно выбрать, и даже после выбора, сомневаешься, может, что-то другое надо было.

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

Базовые знания (фотошоп, верстка, php) я получала по книгам.

Это тоже вариант, не самый плохой, но нужно учитывать, что большинство книг в этой сфере устаревают к моменту публикации.

Довелось мне однажды побывать техническим редактором книги по html. Я уж не помню, как так получилось. Оплата за мою работу была очень скромной, но я согласилась из любопытства, посмотреть, что у меня получится, и вообще, как это. Ну и было
бы приятно увидеть свое имя мелким шрифтом на странице, которую все равно
никто не читает 😂

Мне достался очень плачевный перевод
с англоязычной книги (переводчик явно не обладал техническими знаниями), хуже
того, книгу уже на этом этапе уже было бы лучше не читать, чтобы не забивать голову устаревшими конструкциями. Например, автор предлагал использовать тег font, который w3.org объявил deprecated.

Я вычитывала этот перевод несколько
месяцев, приходилось скорее переводить заново. Все поля были исчерканы пометками
вроде “сейчас лучше это заменить на классы или стили”.

Потом отдала книгу на вычитку обычному редактору, и по плану, после ее правок,
мне должны были прислать эту книгу на окончательную вычитку. Мало ли, что
редактор напутает)

Прошел год!!

Я сменила работу, была очень загружена.
Забыла уже сто раз про эту книгу. И тут мне ее присылают на окончательную вычитку.

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

Они меня не поняли. Удивились, что я отказалась ее повторно вычитать, потому
что работы уже осталось немного, а они мне еще почти не заплатили.

Но я больше не хотела видеть свое имя напечатанным в этой книге 🙄

Встречали такие безнадежно устаревшие книги?
Учитесь по книгам?

Вообще, если что, я за книги. Но важно следить, чтобы автор был практикующим то, о чем пишет, ну и все равно учитывать, что что-то может устареть, год выпуска тут не вполне показателен.
5
А теперь пост-урок.
Честно скажу, вчера я сперва озадачилась, нужно ли продолжать такие посты, комментариев не было поначалу, но потом девчонки порадовали и ответами правильными, и вопросами интересными.

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

Пока задача одна - понимать каждый отдельный пост-урок. Пока понятно, то все ок.

Вы же не ждете в другой специальности, что прочитали пару страниц и стали хорошим юристом? Или кем угодно еще.
Нужно время.

Ладно, перейдем к делу.

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

Вчера был отличный вопрос: почему в первом echo переменные записаны в кавычках, а во втором без?

Все дело в том, что мы оперируем разными типами данных.

В первом случае у нас строка, она должна быть в кавычках и у php есть огромное количество функций для работы со строками.

Простейший способ определить строку — заключить строку в одинарные кавычки (символ '). Двойные тоже можно, но лучше одинарные.

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

<?php

echo 'Это — простая строка';

?>

У php очень много функций для работы со строками, он нам очень помогает в этом. Я их сама все не знаю, но знаю, что всегда могу подсмотреть в документации.

Пример (первый от балды в доке взяла):

str_repeat($string, $times) - Функция возвращает строку string, повторенную times раз.


<?php

echo str_repeat("-=", 10);

?>

Результат выполнения приведённого примера:

-=-=-=-=-=-=-=-=-=-=

Зачем это надо?
Понятия не имею 😂 Мне кажется, именно эту функцию я никогда не использовала. А может, не помню просто.

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

Например, заполнил пользователь поля в форме регистрации, а я в базе хочу хранить в одном поле Имя Фамилию. И заодно эти и другие поля почистить от пробелом и хтмл-символов, чтобы исключить неверные данные. Тут-то и пригождаются строковые функции.

Числовые типы - это int и float
int - целое число, float - плавающее

<?php

$a = 1234; // десятичное число
$b = 1.234; // плавающее число

?>

Для них у php тоже много функций, что хотите с ними делайте, ваша математичка льет слезы, если сможете протащить комп за парту. Хоть округлить, хоть арккосинус посчитать (Господи, что это, сто лет не встречала) - и все это одной из функций, в одно движение.

Например,

ceil — Округляет дробное число в бо́льшую сторону


<?php

echo ceil(4.3); // 5
echo ceil(9.999); // 10
echo ceil(-3.14); // -3
?>

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

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

С этими двумя типами все понятно? У нас их впереди еще много.

#урокиphp #синтаксисphp
👍14
Давайте еще немного про типы данных поговорим. Все приводить пока не буду, избыток информации, которая пока не используется, не будет полезным, но про важные, самые используемые типы надо договорить.

Тип bool - логический. У него может быть только два значения и они выражают истинность значения. Он может быть либо true, либо false.
Логический тип данных используется для таких вещей, которые предполагают два варианта ответа - да (true) или нет(false).

К примеру, на вопрос "вам уже есть 18 лет?" в можете ответить да, то есть true, или нет, то есть false.

Давайте посмотрим на примере:

<?php
$isAdult = true; // уже взрослый
?>

Поменяем значение на другое:

<?php
$isAdult = false; // еще не взрослый
?>
Выведем значение нашей переменной на экран. Используем для этого специальную функцию var_dump:


<?php
$isAdult = true;
var_dump($isAdult); // выведет true
?>

А вот через echo выводить логические значения не удобно:

<?php echo true; // выведет 1
echo false; // выведет пустоту?>
?>


Тип данных null

В PHP существует еще одно специальное значение null, которое обозначает "ничего". К примеру, мы можем присвоить переменной это значение в знак того, что там ничего не лежит.

Давайте посмотрим на примере:
<?php
$test = null;
?>

Выведем значение нашей переменной с помощью var_dump:
<?php
$test = null;
var_dump($test); // выведет null
?>

А вот через echo мы ничего не увидим:
<?php
$test = null;
echo $test; // выведет пустоту
?>

Вопрос на засыпку, можете привести пример, как может использоваться этот тип?
Для чего может быть нужна пустая переменная?

#урокиphp #синтаксисphp
👍6
Отвечаю на вопрос, хотя вы правильно ответили.

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

На сервер прилетят данные по полям:
$name = 'Екатерина';
$patronymic = null;
$surname = 'Голева';

В базу они так и сохранятся. Поле Отчество будет пустым, но чтобы это обозначить, мы используем null.

-------
Итак, я зарегистрировалась без имени, решила залогиниться под своим логином и паролем.
Php сделает запрос в базу и получит мое имя-фамилию, без отчества.

Но ошибки не будет. Если пользователь зайдет в свой личный кабинет, чтобы изменить данные о себе, то он увидит заполненные поля с фамилией и именем и пустое с очеством.

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


Что касается вопроса про var_dump и echo - отличный вопрос.

echo (есть еще аналог print, делает то же самое) выводит строку.

var_dump помимо вывода строки или числа еще будет указывать тип выводимых данных.

<?php

$example = 'Hello world';
var_dump($example);

?>

Выведется

string(12) "Hello world"

Зачем это нужно?
Пользователю не нужно. А программисту очень нужно бывает для отладки программы. Конечно, когда у нас простая строка вроде 'Hello world', то мы и сами видим, что там за тип и что вообще внутри содержится.
Но когда мы дойдем до массивов и объектов, то очень часто бывает нужно посмотреть, что содержится внутри. Ведь в коде чаще всего данные берутся от пользователя или из базы, а вовсе не программист пишет все эти $example = 'Hello world';,
поэтому нам надо понимать, что именно прилетело.
👍8
Вопрос:

С точки зрения программиста самого начального уровня.

Какие задания программист получает? И как начинает выполнять? И что является результатом работы?

Например, если я экономист - мне поручают, например, анализ финансового состояния - дают набор документов и сведения для анализа, есть критерии, по которым я должна проверить эти документы и сведения и выслать результат. Тут мне все понятно. То есть существует некий образец, формулы, по которым проверяются документы и сравниваются с нормальными параметрами. Начинаю я работу с разбивки на разделы и анализа каждого из них. Потом соединяю.
Если я юрист - у меня есть запрос клиента на оценку ситуации - примерно такая же схема работы. Если просят составить документ - я открываю какие-то уже имеющиеся у меня шаблоны и с учётом ситуации и действующих норм их корректирую, создаю то, что нужно в этот раз. Но даже если шаблона нет - создаю его сама с учётом уже имеющегося опыта и знаний.
Вот эти виды деятельности мне понятны на 500%))

А программист?
Полностью каждый раз создаёт что/то из ничего? Или у него тоже есть шаблоны - он смотрит - какой подходит - берет его и начинает корректировать?
Как начинающему программисту понимать какие шаблоны можно использовать в каждой ситуации?
Или он как писатель - заново каждый раз пишет свою книгу с нуля?

Программист выполняет все задания полностью сам или есть руководитель/поверяющий, который, даёт какой-то блок/часть работы, а потом это соединяет, который проверяет ошибки и корректирует? Это командная работа или нет?

И насколько реально начинающему программисту сразу начать работать онлайн? Возможно ли это без помощи более опытных сотрудников?

В общем, видите, пока -
полная каша, страхи и неуверенность.

Ответ.

Мы по умолчанию будем говорить только про начинающих программистов.

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

Варианты могут быть такие для начинающего программиста:
1. Программист хорошо проникся теорией (читал книги или смотрел уроки в бесплатных курсах, на ютубе и т.д.), может делать простые задачи, но свой проект с нуля не делал.
2. Программист знает теорию и делал свой хотя бы один проект с нуля.
3. Программист знает теорию и делал разные проекты с нуля, пусть простые и для себя, но все же. Еще лучше, если использовал фреймворки (я их пока не касалась).

Мы тут не говорим об идеальном знании теории, но нужно приблизительно знать возможности языка и где можно посмотреть подробнее. Но сами понимаете, если даже этого нет, то смысл идти в эту сферу.

"Какие задания программист получает? И как начинает выполнять? И что является результатом работы?"

1. Если программист работает в команде с другими разработчиками, то ему поначалу дают простые задания. Например, компания разрабатывает новостной проект. Задачи могут быть такие:
- поправь вывод даты, выведи дату публикации новости, а не дату создания
- измени сортировку вывода, по дате публицкации, а не дате создания
- чуть-чуть сложнее: добавь поле в базу новое, Дата публикации. И возможность в админке сохранять для новости эту дату.

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

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

2. Если программист работает один (например, на фрилансе), то ему очень желателен опыт разворачивания своего проекта, хотя бы одного, простого.
Тогда задачи могут быть такие.

1. Сторонний заказчик просит переписать имеющийся сайт с кривого кода (или старый дизайн решили обновить, а заодно и код сайта) на новый вариант.
2. Просят дописать отдельный модуль, какие-то новые возможности в проекте, например, отправку писем пользователям при определенных событиях (уведомления о новых статьях
👍6👏2
Не влезло...
2. Просят дописать отдельный модуль, какие-то новые возможности в проекте, например, отправку писем пользователям при определенных событиях (уведомления о новых статьях для тех, кто подписался на таую рассылку, например).
Получает программист задания в письменном виде, где заказчик (или, если это в рамках компании, ведущий программист) описывает задачу.
В компании обычно подробно описывают задачу, какие поля надо, что и как должно проверяться и работать, заказчики сторонние
обычно в детали не впадают и пишут абстрактно, что хотят видеть, а детали программист сам продумывает. Но лучше максимально подробно
согласовать, чтобы не переделывать сто раз.
Программисту обычно дают готовую верстку (если он не подрядился еще и по фронту поверстать сам), у него уже компьютер настроен так, чтобы сесть и начать писать код, после чего он этот код отдает прямо на флешке либо через git.

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

Шаблоны есть у программиста. Но не совсем шаблоны, как вы их понимаете.

Есть код, который кто-то другой писал. Это код в имеющемся проекте, либо примеры из книг и интернета.

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

Повозившись с ошибками и неработающим кодом и разобравшись, почему не работает и как надо, чтобы работало, вы довольно быстро начинаете понимать, как писать свою книгу, но в любом
случае не с нуля.

Всегда опираясь на три вещи:
1. документацию
2. чужие примеры
3. свой опыт и свой имеющийся уже код

Без этих трех вещей (особенно первых двух) я ни одной задачи, наверное, не сделаю, не то, чтоб новый проект написать. Хотя я в программировании
больше 15 лет.

Как начинающему программисту понимать какие шаблоны можно использовать в каждой ситуации?

Гугл и собственный опыт. Или спросить коллег, если они есть.

Программист выполняет все задания полностью сам или есть руководитель/поверяющий, который, даёт какой-то блок/часть работы, а потом это соединяет, который проверяет ошибки и корректирует? Это командная работа или нет?

Зависит от задач. Есть компании, где программист один. Он сам себя проверяет и контролирует. Есть компании, где программист еще и верстает сам, и рисует сам. Но это маленькие скромные компании с простым проектом.
(mywishbook.ru мог бы к ним относиться в начале развития, но мы с ним вместе развились до средненького). В крупной компании и на крупных проектах всегда командная работа.

И насколько реально начинающему программисту сразу начать работать онлайн? Возможно ли это без помощи более опытных сотрудников?

Что вы имеете в виду под "сразу"? И что вы имеете в виду под "начинающим" программистом?

Все-таки начинающий - это не полный ноль, это уже понимание какое-то должно быть. Если чисто только стажироваться идти, там можно почти с нуля. Без помощи - реально, но тогда собственный опыт должен быть. Часы, потраченные уже на свой проект, созданный по курсу или по книге или еще как-то.
Но вообще, это все равно все условно я написала. Есть любые варианты, правда 🙃

Зависят от человека, от его заинтересованности, от того, сколько времени потратил.

Лучше всего и быстрее всего получается у тех, кто пошел в эту сферу не чисто из-за денег, а из интереса. Мне вот нравилось программировать и хотелось этим заниматься. Хотя перегорания бывали, но все равно. Сама
деятельность вовлекает, и часы летят незаметно.
👍105
Сегодня немного ускоримся и рассмотрим сразу специальный тип данных, который называется массив, циклы и условия. С попыткой примера из реальной жизни. Потому что огда-то в школе я очень долго не могла врубить, что такое цикл.

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

Для создания массива используются квадратные скобки:

<?php
$arr = []; // создаем массив $arr
?>
Пока созданный нами массив не содержит никаких данных. Заполним его названиями дней недели:


<?php
$arr = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс'];
?>
Каждое значение списка, который мы записали в массив, в нашем случае каждый день недели, называется элементом массива. Как вы видите, элементы разделяются между собой запятой.

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

<?php
$arr = [1, 2, 3];
?>

Кроме строк и чисел в массиве можно хранить все допустимые типы данных PHP, а также смешивать их между собой в одном массиве, пример:

<?php
$arr = [1, 2, 'a', 'b', null, true, false];
?>

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

2. Условия.

Специальная конструкция if-else, которая позволяет выполнять некоторый код в зависимости от выполнения какого-либо условия. Синтаксис конструкции выглядит так:

<?php
if (операция сравнения)
{
/* расположенный здесь код выполнится, если результат операция сравнения верный */
}
else
{
/* расположенный здесь код выполнится, если результат операция сравнения неверный
*/
}
?>

Пример:

<?php
$test = 1;

if ($test > 0)
{
echo '+++'; // сработает это
}
else
{
echo '---';
}
?>

3. Цикл.

Циклы используются для прохождения по элементам массива.
Есть разные варианты циклов в php, мы рассмотрим самый используемый:

foreach ($items as $item)
{
//обработка элемента цикла
}

Синтаксис такой: пишется ключевое слово foreach, а после него круглые скобки (). В этих скобках указывается переменная, в которой лежит перебираемый массив, потом слово as, а после него - переменная, в которую при каждом проходе цикла будет попадать элемент массива. Затем должны идти фигурные скобки
{}, в которых будет расположено тело цикла.

Пример:
Переберем массив с числами циклом и выведем на экран квадраты этих чисел:

<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem)
{
echo $elem * $elem . '<br>';
}
?>
. '<br>';
Точка объединяет строки.
<br> - тег переноса строки.
Выведется в столбик:
1
4
9
16
25

#урокиphp #синтаксисphp
👍5
Попробую пример из реальной жизни привести.

Есть рецепт.
Приготовить салат.
Ингредиенты:
помидоры
баклажаны
перцы

Порезать овощи, запечь баклажаны и перцы.

Изобразим на видео
👍4
Смотрим видео и представляем его в виде кода.

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

<?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