Веб-программирование от незрячего, урок 5 серверная часть: PHP by denis-skripnik

View this thread on steempeak.com
· @denis-skripnik ·
$0.84
Веб-программирование от незрячего, урок 5 серверная часть: PHP
Здравствуйте. Продолжаю свою серию уроков о программировании.

В этот раз расскажу о популярном серверном языке, который называется PHP. Он поддерживается у большинства популярных хостингов (Хостинг - место хранения и запуска сайтов), например, https://beget.com/ru

Чаще его используют вместе с базами данных Mysql, но сейчас рассмотрим без них.

## Темы урока:
1. Начало и завершение php файла.
2. Переменные и массивы;
3. Математические операции (Сложение, вычитание, умножение, деление, степень и корень);
4. Функции;
5. Вывод на экран;
6. html код и php;
7. Подключение файлов;
8. Комментарии (Виды комментариев в php);
9. Условия.
10. Циклы.

## 1. Начало и завершение php файла.
Все php файлы начинаются с ``<?``, а заканчиваются ``?>``. Хотя ?> многие разработчики опускают - причина была, но какая, не помню.

Также этими конструкциями выделяется php код внутри HTML.

## 2. Переменные и массивы;
Все они начинаются со знака $, т.е.:
``$name = 'denis'; // Это переменная со значением 'Denis'``
```
$man['name'] = 'Denis'; // Это массив man с ключём name и значением 'Denis'
$man['lastname'] = 'Skripnik'; // Тот-же массив, но ключ 'lastname', а значение - 'Skripnik'
```

### Другие варианты написания массива:
Наш массив, представленный выше, можно представить так:
```
$man = array(
'name' => 'Denis',
'lastname' => 'Skripnik'
);
```
Или:
```
$man = [
'name' => 'Denis',
'lastname' => 'Skripnik'
];
```

И, наконец, последний вариант, который больше подходит для массивов, где ключ (name, lastname в предыдущих примерах) не нужен. Давайте, к примеру, перечислим то, что есть у меня на столе:
``$table = array('noutbook', 'monitor', 'keybord', 'other');``
Также это можно прописать с квадратными скобками:
``$table = ['noutbook', 'monitor', 'keybord', 'other'];``

В этом случае ключи массива будут иметь числовые наименования, но не от 1, а от 0, заканчиваться не 4, а 3. Также сей массив можно было бы представить по-старому:
```
$table = [
0 => 'noutbook',
1 => 'monitor',
2 => 'keybord',
3 => 'other'];
```

Вот так.

## 3. Математические операции
Перечислю знаки кратко:
- "+" - сложение;
- "-" - вычитание;
- "*" - умножение;
- "/" - деление;
- "^" - возведение в степень;
- sqrt() - квадратный корень;
- "^(1/3)' - Думаю, поняли, как создавать корни других степеней.

Пример:
``$math = 3*($var1 + $var2)/$n - 4*(sqrt($n) + 9^($var2/5))^3;``

Как видете, можно писать такие достаточно сложные выражения (Главное не забывать правильно расставлять скобки, чтоб скрипт соблюдал очерёдность вычислений).

Пусть переменные будут иметь следующие значения:
```
$var1 = 5;
$var2 = 20;
$n = 4;
```
Тогда выражение будет таким:
``$math = 3*(5 + 20)/4 - 4*(sqrt(4) + 9^(20/5))^3;``
Оно преобразуется в следующее:
``$math = 75/4 - 4*(2 + 9^4)^3;``
А оно:
``$math = 18.75 - 4*(2 + 6561)^3;``
Далее скрипт изменяет его так:
``$math = 18.75 - 4*282687895547;``
И под конец:
``$math = 18.75 - 1130751582188;``
И результат:
``$math = -1130751582169.25;``

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

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

## 4. Функции;
Как и в js, они начинаются с function. Отличие лишь в том, что переменные все и массивы начинаются с $.
```
function summ($n1, $n2) {
$s = $n1+$n2;
return $s;
}
summ(5, 13);
```

## 5. Вывод на экран;
Производится при помощи конструкции echo. Давайте выведем функцию summ, которая приняла числа и возвратила результат суммирования:
``echo summ(5, 13);``

### Для объединения строк/переменных необходимо использовать не +, а точку:
``echo '<p>Сумма чисел 5 и 13: '.summ(5, 13).'</p>';``

Как видете, можно и html код также добавлять.

А если бы 5 и 13 были бы представлены переменными $chislo1 и $chislo2, вводили бы так:
``echo '<p>Сумма чисел '.$chislo1.' и '.$chislo2.': '.summ($chislo1, $chislo2).'</p>';``

Думаю, понятно.

Если мы введём вместо апострофов кавычки, можно будет не отделять переменные от слов:
``echo "<p>Сумма чисел $chislo1 и $chislo2: ".summ($chislo1, $chislo2)."</p>";``

## 6. html код и php;
Есть 2 метода вставки HTML:
1. В echo (СМ. выше). Но тут есть нюанс:
**Если вы в echo прописали кавычки, в html коде значения атрибутов должны заключаться в апострофы, и наоборот: если в echo апострофы, HTML атрибуты должны иметь значения в кавычках. Ну и если что-то в тексте пишете в кавычках, надо быть осторожными при использовании echo**;
2. Закрыть ?> и писать HTML в привычном виде, а затем, когда надо вставлять php код, пишем "<?php" (Без кавычек).

Пример с ошибочным echo:
``echo "<p align="center">Текст по центру, но его не будет из-за кавычек в атрибуте align.</p>";``
Верный вариант 1:
``echo '<p align="center">Текст по центру, будет выведен.</p>';``
Верный вариант 2:
``echo "<p align='center'>Текст по центру, будет выведен.</p>";``

Теперь пример вывода HTML после закрытия php:
```
$var = 'Какой-то php код, в нашем случае переменная пусть будет';
?>
<div align="center" id='text'>А здесь HTML код с привычными нам атрибутами, тегами и ПР. Обращать внимание на верное написание кавычек, как в echo, не нужно.</div>
<?php
// Опять php
```

Как видете, всё просто.


### Как выводить значение переменной в html коде:
1. Файл должен иметь формат .php;
2. Первый способ - это написать ``<?php echo $name; ?>``
3. Второй, который является более кратким и красивым: ``<?= $name ?>``.

Пример 1:
```
$ya = 'Denis';
?>
<p> My name is <?php echo $ya; ?>.</p>
```

Пример 2:
```
$ya = 'Denis';
?>
<p>My name is <?= $ya ?>.</p>
```


## 7. Подключение файлов;
Есть 3 варианта подключения:
- ``include 'Путь-к-файлу';`` - Конструкция include предназначена для включения файлов в код сценария PHP во время исполнения;
- ``require 'путь-к-файлу';`` - Конструкция require позволяет включать файлы в PHP сценарий до выполнения сценария PHP;
- ``require_once 'путь-к-файлу';`` = Позволяет случайно не подключить 1 файл дважды, что очень удобно при работе с большими php проектами.

Пример:
```
<?php
require_once 'header.php';
require_once 'main.php';
require_once 'footer.php';
?>
```

Это я привёл структуру, которую часто используют в php сайтах:
- header.php - верхняя часть html кода;
- main.php - основная часть (Контент);
- footer.php- Подвал сайта, нижняя часть html кода.

Иногда ещё между footer и main добавляется sidebar.php.

## 8. Комментарии (Виды комментариев в php);
- "//" без кавычек - однострочные комментарии. Пример:
``// комментарий к коду``
- "#" - такой-же однострочный вид комментариев:
``# комментарий``
- Следующий вид комментариев:
```
/* Начало комментария
в несколько строк
*/
```

## 9. Условия.
Их также 2 вида. Отличие в первом лишь в том, что вместо 3 равно используется 2:
1. if:
```
if ($num1 + num2 == 9) {
echo 'верно';
} else if ($num1 + $num2 > 9) {
echo 'Сумма > 9';
} else {
echo 'Сумма меньше 9';
}
```
2. Его также можно представить в виде switch:
```
switch ($num1 + $num2) {
    case 9:
echo 'верно';
        break;
    case 13:
echo '> 9';
        break;
    default:
       echo "Неверно";
}
```

Так как case показывает то, чему равно, поэтому во втором варианте не прописать точно такие-же, как в if, условия.

## 10. Циклы:
1. for. Давайте, например, выведем все числа от 1 до 10:
```
for ($a = 1; $a < 10; $a++) {
echo $a.'<br />';
}
```
Выведет:
1
2
3
4
5
6
7
8
9
2. Цикл while:
Пример выше можно представить так:
```
while ($a < 10) {
echo $a.'<br />';
$a++
}
```
Этим циклом давно не пользовался, поэтому могу ошибаться;
3. foreach:
Цикл для чтения и разбивки массива.
Вспомним пример с массивом $man:
```
$man = [
'name' => 'Denis',
'lastname' => 'Skripnik'
]
```
А теперь сделаем цикл:
```
foreach ($man as $key => $value) { // Вместо key и value могут быть любые переменные. Key - ключ массива, value - значение.
echo "<p>My $key is $value.</p>";
}
```
На странице появится:
My name is Denis.
My lastname is Skripnik.

А если бы мы написали так:
``$man = ['Denis' => 'Skripnik'];``
Вывелось бы: my Denis is Skripnik. Соответственно в цикле вывод пришлось бы изменить так:
```
foreach ($man as $firstname => $lastname) {
echo "<p>My name is $firstname $lastname.</p>";
}
```

## Всё
Для более углублённого изучения советую изучать документацию http://php.net/manual/ru/
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id62,584,611
authordenis-skripnik
permlinkveb-programmirovanie-ot-nezryachego-urok-5-servernaya-chast-php-756979b12392best
categoryesteem
json_metadata{"links":["https:\/\/beget.com\/ru","http:\/\/php.net\/manual\/ru\/"],"app":"esteem\/1.1.12-surfer","tags":["esteem","slovo","web-dev","php","programming"],"community":"esteem.app","format":"markdown+html"}
created2018-09-16 11:08:09
last_update2018-09-16 11:08:09
depth0
children1
net_rshares752,829,443,341
last_payout2018-09-23 11:08:09
cashout_time1969-12-31 23:59:59
total_payout_value0.635 SBD
curator_payout_value0.201 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length8,217
author_reputation4,737,569,079,426
root_title"Веб-программирование от незрячего, урок 5 серверная часть: PHP"
beneficiaries
0.
weight1,000
accountesteemapp
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (51)
@ilovecoding ·
Hello! Your post has been resteemed and upvoted by @ilovecoding because **we love coding**! Keep up good work! Consider upvoting this comment to support the @ilovecoding and increase your future rewards! ^_^ Steem On! 
 ![](https://codingforspeed.com/images/i-love-coding.jpg) 
*Reply !stop to disable the comment. Thanks!*
👍  
properties (23)
post_id62,584,622
authorilovecoding
permlink20180916t110821001z
categoryesteem
json_metadata{"app":"ilovecoding","tags":["ilovecoding"]}
created2018-09-16 11:08:21
last_update2018-09-16 11:08:21
depth1
children0
net_rshares491,389,848
last_payout2018-09-23 11:08:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length323
author_reputation40,842,386,526
root_title"Веб-программирование от незрячего, урок 5 серверная часть: PHP"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)