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

in #esteem6 years ago

Здравствуйте. Продолжаю свою серию уроков о программировании.

В этот раз расскажу о популярном серверном языке, который называется 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';
}
  1. Его также можно представить в виде 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

  1. Цикл while:
    Пример выше можно представить так:
while ($a < 10) {
echo $a.'<br />';
$a++
}

Этим циклом давно не пользовался, поэтому могу ошибаться;

  1. 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/

Sort:  

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!

Reply !stop to disable the comment. Thanks!

Coin Marketplace

STEEM 0.33
TRX 0.11
JST 0.034
BTC 66438.74
ETH 3268.32
USDT 1.00
SBD 4.39