Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Epic PHP #1

Roma
February 24, 2014

Epic PHP #1

Слайды к первому занятию курса Epic PHP (http://epixx.ru/epic-php/).
Темы: история языка, установка окружения, основы синтаксиса

Roma

February 24, 2014
Tweet

More Decks by Roma

Other Decks in Programming

Transcript

  1. • В веб-разработке с 2005-го года • В 2011 соосновал

    Evercode Lab • Хобби: кикер, книги, подкасты, сноуборд, путешествия
  2. 1994 Расмус Лердорф (Rasmus Lerdorf), датский программист, пишет набор скриптов

    на Perl/ CGI для вывода и учёта посетителей его онлайн-резюме, обрабатывающий шаблоны HTML-документов. ! PHP – Personal Home Page
  3. 1995 Расмус переписывает все на C и добавляет больше возможностей

    и суперспособностей. ! PHP/FI — Personal Home Page/Forms Interpreter
  4. 1998 PHP3.0 — два израильских программиста, Энди Гутманс и Зеев

    Сураски, полностью переписали код интерпретатора. ! Возможность расширения за счет модулей. ! PHP: Hypertext Preprocessor
  5. 2000 • PHP 4.0 (Zend Engine внутри) • улучшение производительности

    • поддержка сессий • буферизация вывода • более безопасные способы обработки вводимой пользователем информации • несколько новых языковых конструкций.
  6. 2004 PHP 5.0 ! обновление ядра Zend (Zend Engine 2),

    что существенно увеличило эффективность интерпретатора. Введена поддержка языка разметки XML. Полностью переработаны функции ООП
  7. 2014 На курс Epic PHP записываются будущие профессионалы и лидеры

    разработки на PHP. ! На вид они все отличные ребята. ;)
  8. classic extended <?php ! $myName = ‘Jack’; echo ‘Hello, world!

    My name is ‘ . $myName . ‘ I am the new superstar!’; !
  9. 5.4 лучше 5.3 • 5.4 работает быстрее. Сильно быстрее. •

    У него есть встроенный сервер (не нужен apache/nginx/... • У него есть новые фичи
  10. Но 5.3 иногда нужен • Так как 5.4 есть далеко

    не на всех хостингах (хинт: просите суппорт) • Локальная среда разработки максимально должна быть приближена к серверу • 5.2 не признавать ни в коем случае
  11. Linux • Если у вас линукс, то скорее всего вы

    и так знаете, как и что поставить и собрать.
  12. Linux • Если у вас линукс, то скорее всего вы

    и так знаете, как и что поставить и собрать. • Нет?
  13. Linux • Если у вас линукс, то скорее всего вы

    и так знаете, как и что поставить и собрать. • Нет? • Ок, начните с XAMPP :)
  14. Linux • Если у вас линукс, то скорее всего вы

    и так знаете, как и что поставить и собрать. • Нет? • Ок, начните с XAMPP :) • Или: sudo apt-get install php5
  15. Linux • Если у вас линукс, то скорее всего вы

    и так знаете, как и что поставить и собрать. • Нет? • Ок, начните с XAMPP :) • Или: sudo apt-get install php5 • и поработаем со встроенным сервером
  16. Попробуем? • C:\xampp\htdocs • Создайте папку epicphp • А в

    ней файл test.php • Выведите в нем “hello, world” • http://localhost/epicphp/test.php
  17. Тэги <?php 
 echo ‘я код, я заключен в тэги’;


    ?> ! <?
 echo ‘тэги могут быть короткими’;
 ?> ! А есть еще немного более сокращенный вариант для <? echo $variable; ?> <?=$variable ?>
  18. Переменные • Переменные обозначаются значком $ • Имя переменной содержит

    только латинские буквы, символ _ и цифры • Име переменной НЕ может начинаться с цифры
  19. Комментарии Правило #3: ! $comments = true; /* Чем больше

    комментариев, тем проще разобраться потом. Но код надо стараться писать так, чтобы он был понятен и без комментариев. */
  20. Комментарии Правило #4: ! /* В этом случае сначала следует

    комментарий, на следующей строчке действие */ ! $action_first = 0;
  21. Комментарии /* this is commented */ but this is not

    */ ! ! # This is also a single line comment # New line comment ?> Here new line comment dont work, and this will be printed
  22. Константы Не меняются по определению и не протухают =) !

    <?php define('ERROR', 'Something went wrong.'); const FOO = 'bar'; ! ! Могут содержать только скалярные значения.
  23. Условные операторы if($condition === true){ // будет выполнено это }

    elseif ($anotherCondition === true) { // будет выполнено это действие } else { // будет выполнено вообще другое }
  24. Условные операторы Условие может быть выражением или функцией ! if(

    $homer_is_happy > 155){ if (you_are_hungry()) { if ($homer_is_fat = eat_donuts()) {
  25. Условные операторы Условия могут быть вложенными ! if( /*если первое

    условие выполнено*/ ) { if( /*второе условие выполнено*/ ) { выполнить_дествие(); } }
  26. Условные операторы Задание ! Задайте переменную $age, равную вашему возрасту.

    Сделайте условие: если вам меньше 20, то выведите «Все впереди, Jack» 20-30 — «Самое время взяться за ум, Jack» больше 30 — «У вас есть чему поучиться, Jack»
  27. Циклы while (цикл с предусловием) ! while ($i <= 10)

    { echo $i++; /* the printed value would be $i before the increment (post-increment) */ }
  28. Циклы continue ! while (list($key, $value) = each($arr)) { if

    (!($key % 2)) { // skip odd members continue; } do_something_odd($value); }
  29. Циклы break ! while (++$i) { switch ($i) { case

    5: echo "At 5<br />\n"; break 1; /* Exit only the switch. */ case 10: echo "At 10; quitting<br />\n"; break 2; /* Exit the switch and the while. */ default: break; } }
  30. Why, oh, why? • читаемость • удобство поддержки • разделение

    обязанностей и модульность • Учитель по информатике сказал мне, что так надо • Если не думать об этом, насмешки и глум последуют, и вы закончите жизнь на дне
  31. Функции • Все фукнции в PHP возвращают значение (null, если

    явно ничего не прописано) • названия функций не чувствительны к регистру • MyFunctionName() = MyFuNcTiOnNaMe()
  32. Функции • global $id; — использование в функции переменных извне

    (не повторяйте этого дома) • Можно задать значения параметров по умолчанию, даже если они передаются по ссылке
  33. Функции • Даже не смотрите как оно раньше работало в

    PHP4 • В PHP5 объекты всегда передаются по ссылке, просто запомните • “_” валидное ли имя для функции?
  34. Функции <?php function printList($string, $count = 5) ! function newTo5(&$number

    = 2) ! $a = func_get_args(); ! int func_num_args(void) ! mixed func_get_arg ( int $arg_num )
  35. Начало пути • Пользователь вводит в строке браузера http://epixx.ru •

    if (не указан IP получателя) • запрос на DNS сервер для получения адреса сервера • Формируется http запрос, который упаковывается и отправляется в сеть.
  36. Дорога — мой дом • Пакет проходит через цепочку маршрутизаторов,

    каждый из которых проверяет пункт назначения и перенаправляет кратчайшим путем. • Запрос приходит к получателю – серверу • Распаковка и определение приложения, которое займется его обработкой.
  37. Веб-сервер • веб-сервер начинает обработку • статические файлы (изображения, javascript)

    возвращаются без обработки • php файлы нужно выполнить на интерпретаторе и только после этого вернуть результат пользователю.
  38. Веб-сервер • Epixx.ru работает на Wordpress, т.е. запросили php файл

    • поэтому сервер ищет файл index.php и передает его php интерпретатору
  39. Интерпретатор • Интерпретатор выполняет код, при необходимости обращаясь к базе

    данных, файлам, другим сервисам и возвращает результат
  40. Обратный путь • Полученный код упаковывается в http ответ, сетевой

    пакет и отправляется пользователю. • Браузер получает ответ от сервера и рендерит (рисует) его
  41. Стандарты! • Вы не одни и не одиноки • Вы

    хотите использовать чужой код • А кто-то хочет использовать ваш • Пишите код так, будто потом его будет читать больной на всю голову психопат с целым арсеналом оружия
  42. Стандарты! • PSR-1 – основные рекомендации по написанию кода. Не

    только отступы и переносы строк. • PSR-2 – правила для оформления кода.
  43. FizzBuzz Напишите программу, которая выводит числа от 1 до 100.

    Но! Если число кратно трем, то выводит “Fizz”, а если пяти — “Buzz”. Для чисел, которые кратны одновременно трем и пяти, программа должна выводить “FizzBuzz”.
  44. FizzBuzz Напишите программу, которая выводит числа от 1 до 100.

    Но! Если число кратно трем, то выводит “Fizz”, а если пяти — “Buzz”. Для чисел, которые кратны одновременно трем и пяти, программа должна выводить “FizzBuzz”. Hint: % – остаток от деления
  45. http://php.net/manual/en/language.types.type-juggling.php ! $values = array('', 0, true, false, '0'); !

    foreach ($values as $test) { echo $test . ' - '; if ($test != "") { echo 'yup'; } if ($test) { echo 'nope'; } echo "\n"; } Приведение типов
  46. Мелочи • = — присвоение • == — проверяем равенство

    • === — проверяем равенство и братство • != — ? • !== — ? • http://php.net/manual/en/ language.operators.comparison.php