1 / 55

ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ. ЯЗЫК PHP. Вставка в HTML <?php echo("Hello, world!"); ?> <script language="php"> echo("Hello, world!"); </script> <? echo("Hello,world!"); ?> <?= Hello, world! ?>

xandy
Download Presentation

ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Вставка в HTML <?php echo("Hello, world!"); ?> <script language="php"> echo("Hello, world!"); </script> <? echo("Hello,world!"); ?> <?= Hello, world! ?> Закрывающий тег блока PHP-кода включает сразу следующий за ним перевод строки, если он имеется. Кроме того, закрывающий тег автоматически подразумевает точку с запятой; вам не нужно заканчивать последнюю строку кода в блоке точкой с запятой. Закрывающий тег PHP-блока в конце файла не является обязательным. А. В. Соловьев, 2007 Rev. 1.01. 18.01.2008

  2. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP • Разделение инструкций • точка с запятой • закрывающий тег • Комментарии • многострочные как в Си • /* Комментарий */ • однострочные как в Си • // Комментарий • однострочные как в Perl, bash и т.п. • # Комментарий • Однострочные комментарии идут только до конца строки или текущего блока PHP-кода: • <?php //echo "try1" ?> try2 • На экран выводится: • try2 А. В. Соловьев, 2007

  3. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Типы boolили boolean: TRUE или FALSE int или integer: 123, 0123, 0x1A floatили double: 1.23, 7e-10 string: 'Строка в одинарных кавычках может состоять из нескольких строк. Если она содержит кавычку \' или обратный слеш \\, эти символы предваряются обратным слешем.' "Переменная A=$A\nПеременная B=$B" Переменная A=5 Переменная B=56 Явное преобразование к типу как в Си: (type) $A = (int) ((0.1+0.7)*10); А. В. Соловьев, 2007

  4. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Переменные Переменные в PHP представлены знаком доллара с последующим именем переменной. Имя переменной чувствительно к регистру. PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присвоите строковое значение переменной $var, $var станет строкой. Если вы затем присвоите $var целочисленное значение, она станет целым числом: $var = "строка"; $var = 5; А. В. Соловьев, 2007

  5. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Массивы Упорядоченное отображение, которое устанавливает соответствие между значением и ключом: массив, список (вектор), хэш-таблица, словарь, коллекцию, стек, очередь и т.п. В качестве значения может быть другой массив PHP. $arr1 = array(43, true, 67, -1, 6.7, "value"); $arr2 = array("apple"=>"green", "ananas"=>"yellow", 5=>"Mon", 6=>0); $arr3 = array(); $arr3[0] = 1; $arr3[1] = array(45, "orange"=>3.0); $arr3[] = $arr1; $arr3[] = array(45, $arr2); print_r($arr3); echo $arr2["apple"]; А. В. Соловьев, 2007

  6. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Некоторые предопределённые переменные $GLOBALS $_SERVER $_GET $_POST $_COOKIE $_FILES $_REQUEST $_SESSION А. В. Соловьев, 2007

  7. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Область видимости переменной В большинстве случаев все переменные PHP имеют единую область видимости. Эта единая область видимости охватывает также включаемые (include) и требуемые (require) файлы. <?php $a = 1; include "b.inc"; ?> Однако, любая, используемая внутри функции переменная, по умолчанию ограничена локальной областью видимости функции. <?php $a = 1; function test() { // global $a; echo $a; // или echo $GLOBALS["a"]; } test(); ?> А. В. Соловьев, 2007

  8. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP • Константы • Различия между константами и переменными: • У констант нет приставки в виде знака доллара ($); • Константы можно определить только с помощью функции define(), а не присваиванием значения; • Константы могут быть определены и доступны в любом месте без учета области видимости; • Константы не могут быть переопределены или аннулированы после первоначального объявления; • Константы могут иметь только скалярные значения. • Если вы используете неопределенную константу, PHP предполагает, что вы имеете ввиду само имя константы, как если бы вы указали переменную типа строка (CONSTANT и "CONSTANT"). При этом будет сгенерирована ошибка типа E_NOTICE. • define("DAYS_PER_YEAR", 365); • echo DAYS_PER_YEAR; • echo Days_Per_Year; А. В. Соловьев, 2007

  9. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP А. В. Соловьев, 2007

  10. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Оператор условия if (выражение) оператор; if (выражение) оператор1; elseоператор2; if (выражение1) оператор1; elseif (выражение2) оператор2; … if ($a<0) echo "A=$a"; if ($_SERVER['REQUEST_METHOD']=='GET') { echo 'Параметр из формы: '.$_GET['param1']; $a=1; } elseif ($_SERVER['REQUEST_METHOD']=='POST') { echo 'Параметр из формы: '.$_POST['param1']; $a=2; } else echo 'Недопустимый метод'; А. В. Соловьев, 2007

  11. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Оператор выбора switch (выражение) { caseконст1: операторы; caseконст2: операторы; … default: операторы; } switch ($a) { case "run": func1(); break; case "stop": func2(); break; case "pause": func3(); break; } if ($a=="run") { func1(); } elseif ($a=="stop") { func2(); } elseif ($a=="pause") { func3(); } А. В. Соловьев, 2007

  12. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Оператор цикла с предусловием while (выражение)оператор; $i=10; while ($i--) { echo $i; } Оператор цикла с постусловием doоператор; while (выражение); $i=10; do { echo $i; } while ($i--); А. В. Соловьев, 2007

  13. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Оператор цикла for for (выр1; выр2; выр3)оператор; $arr=array(); for ($i=0; $i<10; $i++) { $arr[$i]=$i; echo $i; } Оператор цикла foreach foreach (массив asзначение)оператор; foreach (массив asключ=>значение) оператор; foreach ($arr as $val) { echo $val; } выр1; while (выр2) { оператор; выр3; } foreach ($_SERVER as $key=>$val) { echo "[$key]=$val"; } А. В. Соловьев, 2007

  14. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Операторы управления циклами break – прерывает выполнение текущего оператора for, foreach, while, do-while или switch, можно указать доп. численный аргумент, указывающий, сколько вложенных структур требуется завершить. continue – прерывает текущую итерацию цикла for, foreach,do-while, while иинициирует проверку условия и следующую итерацию, можно указать доп. численный аргумент, указывающий, в скольких вложенных структурах текущая итерация будет прервана. $a=0; for ($i=0; $i<10; $i++) { echo “i=$i a=$a\n”; if ($i%2) { $a++; continue; } if ($a>3) break; } А. В. Соловьев, 2007

  15. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Операторы включения файла includeимя_файла; include_onceимя_файла; requireимя_файла; require_onceимя_файла; А. В. Соловьев, 2007

  16. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции, определяемые пользователем functionимя_функции (парам1, парам2, …) { операторы; } В PHP 3 функции должны были быть определены прежде, чем они будут использованы. Начиная с PHP 4, такого ограничения нет. Имена функций регистронезависимы. PHP поддерживает передачу аргументов по значению (по умолчанию), передачу аргументов по ссылке, и значения по умолчанию. Значения возвращаются при помощи необязательного операторавозвратаreturn. Возвращаемые значения могут быть любого типа, в том числе это могут быть списки и объекты. Возврат приводит к завершению выполнения функции и передаче управления обратно к той строке кода, в которой данная функция была вызвана. А. В. Соловьев, 2007

  17. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с HTML-формами <form method="get" action="a.php"> ФИО: <input type="text" name="fio"><br> Возраст: <select name="age"> <option value="1">меньше 20</option> <option value="2">20-40</option> <option value="3">больше 40</option> </select><br> <input type="checkbox" name="human"> Я не "бот"!<br> <input type="submit" name="submit" value="ok"> </form> А. В. Соловьев, 2007

  18. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с HTML-формами (скрипт a.php) <?php if (!$_REQUEST["human"]) { echo "Посторонним вход воспрещён!!!\n"; die; } echo "Уважаемый, $_REQUEST[fio]!\n"; if ($_REQUEST["age"]==1) { echo "Ты ещё слишком юн, чтобы узнать правду жизни...\n"; } elseif ($_REQUEST["age"]==2) { echo "А оно вам надо?\n"; } elseif ($_REQUEST["age"]==3) { echo "Делитесь опытом!\n"; } А. В. Соловьев, 2007

  19. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с HTML-формами (скрипт a.php – другой вариант) <?php if (!$_REQUEST["human"]) { echo "Посторонним вход воспрещён!!!\n"; die; } echo "Уважаемый, $_REQUEST[fio]!\n"; $message = array( 1=>"Ты ещё слишком юн, чтобы узнать правду жизни...\n“, 2=>"А оно вам надо?\n“, 3=>"Делитесь опытом!\n" ); echo $message[$_REQUEST["age"]]; А. В. Соловьев, 2007

  20. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с файловой системой chmod("myfile.txt", 0666); - изменение атрибутов (bool) copy("myfile1.txt", "myfile2.txt"); - копирование файла (bool) rename("myfile1.txt", "myfile2.txt"); - переименование файла (bool) unlink("myfile.txt"); - удаление файла (bool) mkdir("mydir"); - создание каталога (bool) rmdir("mydir"); - удаление каталога (bool) if (file_exists("myfile.txt")) { …} – проверка на существование (bool) $str = file_get_contents("myfile.txt"); - чтение содержимого файла в строковую переменную (string) file_put_contents("myfile.txt", $data); - перезапись файла указанной строкой PHP 5 (int) $arr = file("myfile.txt"); - содержимое текстового файла возвращается в виде массива, где каждый элемент – отдельная строка (array) А. В. Соловьев, 2007

  21. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с файловой системой $fh = fopen("myfile.txt", "r+"); - открыть файл (resource) “r” – для чтения (должен существовать), “r+” – для чтения и записи (должен существовать), “w” – для перезаписи (при необх. создается), “a” – для дозаписи (при необх. создается) fclose($fh); - закрыть файл (bool) if (feof($fh)) { … } – проверка на конец файла (bool) $c = fgetc($fh); - считать 1 символ из файла (string) $str = fgets($fh); - считать 1 строку из файла (string) $data = fread($fh, 1024); - считать указанное количество байт (string) $arr = fscanf($fh, "%d%d") или fscanf($fh, "%d%d", $a, $b); - считать из файла данные по формату (array) fwrite($fh, $data) или fputs($fh, $data); - записать в файл строку (int) fprintf($fh, "Дата: %02d.%02d.%d", $d, $m, $y); - записывает в файл строку по формату (int) А. В. Соловьев, 2007

  22. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Вывод в буфер вывода (результирующий HTML) echo "Строка", $var, "что-нибудь ещё…"; - вывод параметров в буфер вывода readfile("myfile.html"); - читает файл и записывает его содержимое в буфер вывода (int) printf("Дата: %02d.%02d.%d", $d, $m, $y); - записывает в буфер вывода строку по формату (int) print("Строка"); - вывод строки в буфер вывода (int) flush(); - немедленно передать содержимое буфера вывода (серверу и далее – клиенту) А. В. Соловьев, 2007

  23. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа со строками $a = "qwerty"; echo $a{1}; // на экран выводится символ w $a{0} = "a"; // в строке qwerty q меняется на a, т.е. "awerty" Внутри двойных кавычек: \n – перевод строки (LF), \r – возврат каретки (CR), \t – табуляция,\\ - обратный слеш, \$ - доллар, \" – двойная кавычка, \000 - \377: символы с ASCII-кодами 0 – 3778, \x00 - \xFF: символы с ASCII-кодами 0 – FF16 Обработка переменных: echo "$drink's taste is great"; // juice's taste is great echo "Drink some {$drink}s"; // Drink some juices echo "An apple is $colors[apple]"; // An apple is green echo "An apple is {$colors['apple']}"; // An apple is green echo "Apple no.$i is {$colors['apple'][$i]}"; // Apple no.1 is red echo "An apple is $colors['apple']"; // syntax error echo "Apple no.$i is $colors[apple][$i]"; // Apple no.1 is Array[1] А. В. Соловьев, 2007

  24. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа со строками $c = chr(32); - получить символ с указанным кодом (string) $i = ord("A"); - получить код символа (int) $str = convert_cyr_string("бНОПНЯ", "w", "k"); - перевести строку на кириллице из одной кодировки в другую (“k” = koi8, “w” = windows,“m” = macintosh, “d” = dos/cp866) (string) $str = addslashes("Is your name O'Connel?"); - вставка в строку обратных слешей перед символами ' " и \ (string) $str = stripslashes("Is your name O\'Connel?"); - удаление из строки обратных слешей, вставленных addslashes или magic_quotes_gpc (string) $str = html_entity_decode("26 &lt; 45"); - преобразование HTML-сущностей в обозначаемые ими символы (string) $str = htmlspecialchars("<<<Duglas&Co.>>>"); - преобразование спец. символов & " ' < > в обозначающие их HTML-сущности (string) $str = strip_tags("<b>Строка</b>"); - удаление из строки тегов HTML и PHP (string) А. В. Соловьев, 2007

  25. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа со строками $arr = explode(".", "28.01.2008"); - разбить строку на подстроки по указанному разделителю (array) $str = implode("-", array(2008,1,28)); - склеить значения элементов массива в одну строку с указанным разделителем (string) $str = ltrim(" Строка"); - убрать пробельные символы слева (string) $str = rtrim("Строка "); - убрать пробельные символы справа (string) $str = trim(" Строка "); - убрать проб. симв. с любой стороны (string) $str = sprintf("%02d.%02d.%d", $d, $m, $y); - формирование строки из указанных аргументоы по формату (string) $a = strlen("qwerty"); - длина строки (int) if (strpos($str, "q")===FALSE) {…} – поиск подстроки в в строке (int) $s = strstr($str, "q"); - поиск подстроки в строке (string) $s = substr("qwerty", 2, 3); - получить подстроку (string) $str = str_replace("banana", "a", "@"); - замена подстрок (string) if (strcasecmp($str1, $str2)==0) {…} – сравнение строк без учёта регистра (int) if (strcmp($str1, $str2)==0) {…} – сравнение строк с учётом регистра А. В. Соловьев, 2007

  26. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с массивами $arr = array("a"=>"lemon", "b"=>"apple", "c"=>"orange"); $i = count($arr); - количество элементов в массиве $k = array_keys($arr); - получить массив ключей (array) $v = array_values($arr); - получить массив значений (array) list($a1, $a2, $a3) = $v; - задать значения переменным, как если бы они были элементами массива if (in_array("lemon", $arr)) {…} – проверить наличие значения в массиве $idx = array_search("lemon", $arr); - определить ключ, соответствующий указанному значению из массива (найти элемент) $s = array_sum(array(0,1,2,3,4,5)); - найти сумму значений элементов массива (int) $a = array_merge($k, $v, …); - слияние двух или неск. массивов (array) $a = array_unique($a); - формирование массива с уникальными значениями элементов (удаление дубликатов) (array) $a = asort($arr); - сортировка по значениям (array) $a = ksort($arr); - сортировка по ключам (array) $a = sort($arr); - простая сортировка по значениям (array) А. В. Соловьев, 2007

  27. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Работа с датой/временем $stamp = time(); - текущее время (сек. от начала эпохи UNIX) (int) $str = date("d.m.Y"); - текущее время по формату (string): D – день недели (Mon-Sun), H – час (00-23), i – минуты (00-59), M – месяц (Jan-Dec), O – часовой пояс от GMT (+0400), r – дата в формате RFC822, s – секунды (00-59), W – номер недели (1-53), z – день года (1-366) $stamp = mktime($hr, $min, $sec, $mon, $day, $y); - вычислить время UNIX для указанного момента (int) if (checkdate($mon, $day, $y)) {…} – проверка корректности даты (bool) Функции работы с HTTP-заголовками header("Location: http://iq.karelia.ru/"); - добавить HTTP-заголовок if (headers_sent()) {…} – проверить, отправлены ли заголовки setcookie("TestCookie", 1, time()+3600); - установить cookie (bool) А. В. Соловьев, 2007

  28. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Математические функции acos($x), asin($x), atan($x), pi(), cos($x), sin($x), tan($x), exp($x), log($x), log10($x), pow($x, $y), sqrt($x), abs($x), ceil($x), floor($x), round($x), max($v1, $v2, …), min($v1, $v2, …), rand($min, $max), srand(time()) $val2 = base_convert($val10, 10, 2); - перевод системы счисления (str) Библиотека iconv (перекодировка) $str = iconv("koi8-r", "utf-8", "Строка"); Библиотека recode (перекодировка) $str = recode_string("koi8-r..utf-8", "Строка"); А. В. Соловьев, 2007

  29. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции, манипулирующие URL $url = parse_url("http://mp3:qwerty@mp3.int.ru/search.php?query=1"); // Разобрать URL на поля (array): Array( [scheme] => http [host] => mp3.int.ru [user] => mp3 [pass] => qwerty [path] => /search.php [query] => query=1 ) $str = urlencode("Extra 34% quality"); - URL-кодирование (string) $str = urldecode("Extra+34%25+quality");- URL-декодирование (string) А. В. Соловьев, 2007

  30. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции, манипулирующие переменными if (empty($var)) {…} – возвращает TRUE, если переменная $var имеет значение 0, "0", "", NULL, FALSE, array() или не определена (bool) if (isset($var)) {…} – возвращает TRUE, если переменная определена $str = gettype($var); - текущий тип переменной (string) if (is_array($arr)) {…} – является ли $arr массивом (bool) $str = print_r($arr, TRUE); - содержимое $arr в читабельном виде (string) settype($a, "integer"); - установить тип переменной (bool) unset($a, $b, …); - аннулировать переменные $str = serialize($obj); - представить объект/массив/переменную в строковом виде (string) $obj = unserialize($str); - перевести строковое представление в объект/ массив/переменную А. В. Соловьев, 2007

  31. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции работы с изображениями (GD) $info = gd_info(); - получить информацию о библиотеке GD (array) Array ( [GD Version] => bundled (2.0.28 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XBM Support] => 1 [JIS-mapped Japanese Font Support] => ) $types = imagetypes(); - какие форматы поддерживаются (int) if ($types & IMG_PNG) {…} константы: IMG_GIF, IMG_JPG, IMG_PNG, IMG_WBMP. А. В. Соловьев, 2007

  32. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции работы с изображениями (GD) $info = gd_info(); - получить информацию о библиотеке GD (array) Array ( [GD Version] => bundled (2.0.28 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XBM Support] => 1 [JIS-mapped Japanese Font Support] => ) $types = imagetypes(); - какие форматы поддерживаются (int) if ($types & IMG_PNG) {…} константы: IMG_GIF, IMG_JPG, IMG_PNG, IMG_WBMP. А. В. Соловьев, 2007

  33. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции работы с изображениями (GD) $img = imagecreate(200, 100); - создать картинку 200х100 с палитрой $img = imagecreatetruecolor(300, 200); - создать полноцветную (16М) картинку 300x200 (resource) $img = imagecreatefromjpeg("my.jpg"); - создать картинку на основе JPEG-файла (resource) $img = imagecreatefrompng("my.png"); - создать картинку на основе PNG-файла (resource) imagedestroy($img); - освободить память от картинки imagejpeg($img); - вывод картинки в формате JPEG … imagejpeg($img, "my.jpg", 65); - … с указанием файла и качества imagepng($img); - вывод картинки в формате PNG $info = getimagesize("my.jpg"); - получить информацию о картинке Array ( [0] => 593 // ширина (также imagesx($img)) [1] => 639// высота (также imagesy($img)) [2] => 3// тип картинки дляimage_type_to_mime_type() [3] => width="593" height="639"// строка для тега <IMG> [bits] => 8 // бит на цвет [mime] => image/png// MIME-тип ) А. В. Соловьев, 2007

  34. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции работы с изображениями (GD) $white = imagecolorallocate($img, 255, 255, 255); - получить идентификатор RGB-цвета (добавить элемент в палитру) (int) Первый вызов устанавливает фоновый цвет картинки. imagesetpixel($img, $x, $y, $clr); - установить пиксел imageline($img, $x1, $y1, $x2, $y2, $clr); - нарисовать линию imagefill($img, $x, $y, $clr); - заполнить область imagearc($img, $cx, $cy, $w, $h, $s, $e, $clr); – нарисовать дугу эллипса imagefilledarc($img, $cx, $cy, $w, $h, $s, $e, $clr, IMG_ARC_PIE); - нарисовать закрашенный сектор эллипса imageellipse($img, $cx, $cy, $w, $h, $clr); - нарисовать эллипс imagefilledellipse($img, $cx, $cy, $w, $h, $clr); - закрашенный эллипс imagerectangle($img, $x1, $y1, $x2, $y2, $clr); - прямоугольник imagefilledrectangle($img, $x1, $y1, $x2, $y2, $clr); - нарисовать закрашенный прямоугольник imagestring($img, $font, $x, $y, "qwerty", $clr); - нарисовать строку растровым шрифтом (встроенные: 1-5) imagettftext($img, $sz, $angle, $x, $y, $clr, "arial.ttf", "qwerty"); - нарисовать строку (UTF8) векторным шрифтом (TTF) А. В. Соловьев, 2007

  35. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции работы с СУБД MySQL $link = mysql_connect("localhost", "user", "pass"); - установить соединение с MySQL-сервером (resource); mysql_close($link); - закрыть соединение с сервером (bool) mysql_select_db("test"); - открыть базу данных “test” (bool) $req = mysql_query("select * from users where uid=1000"); - выполнить SQL-запрос (resource) $n = mysql_num_rows($req); - кол-во строк в ответе на SELECT (int) $n = mysql_affected_rows($link); - кол-во строк изменённых запросами DELETE/INSERT/REPLACE/UPDATE (int) mysql_free_result($req); - освободить память от рез-тов запроса (bool) $arr = mysql_fetch_assoc($req); - получить очередную строку ответа $arr = mysql_fetch_row($req); - получить очередную строку ответа $str = mysql_escape_string("Alex's PC"); - экранировать кавычки в строке для SQL-запроса А. В. Соловьев, 2007

  36. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Функции работы с сессиями session_start(); - начать или возобновить сессию (bool) Уничтожение сессии: session_start(); $_SESSION = array(); session_destroy(); А. В. Соловьев, 2007

  37. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP4 (свойства, методы, конструктор, this) class Basket { // свойства объекта: var $item; // конструктор объекта function Basket() { $this->item = array(); } // методы объекта function add_item($nr, $amount) { if (empty($this->item[$nr])) $this->item[$nr] = 0; $this->item[$nr] += $amount; } function get_max() { return 256; } } $b = new Basket; $b->add_item("12", 5); А. В. Соловьев, 2007

  38. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP4 (наследование, parent, ::) class Owned_Basket extends Basket { var $owner = -1; var $limit = -1; function set_owner($id) { $this->owner = $id; } function get_max() { if ($this->limit < 0) return parent::get_max(); return $this->limit; } function info() { echo "This is a basket object"; } } Owned_Basket::info(); А. В. Соловьев, 2007

  39. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP4 (сериализация) При сериализации сохраняются только свойства объекта и название класса. Методы объекта не сериализуются. Чтобы метод unserialize() по отношению к объекту прошёл успешно, класс с заданным именем должен быт объявлен. При вызове serialize() по отношению к объекту, если в классе имеется метод __sleep(), он вызывается. Она может подготавливать объект к сериализации и возвращать массив имён свойств класса, которые следует сериализовать. Пример использования __sleep() – закрыть соединение с базой данных, сбросить несохранённые данные или ограничить список свойств для сохранения, если объект занимает большой объём. При вызове unserialize() по отношению к объекту, если в классе имеется метод __wakeup(), он вызывается. Основное назначение этой функции – восстановить соединение с базой данных или выполнить подобные инициализационные задачи. А. В. Соловьев, 2007

  40. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (видимость свойств и методов, кон-/де-структор) private – свойство/метод доступно только из данного класса protected – свойство/метод доступно также в родительских и дочерних public – свойство/метод доступно отовсюду (по умолчанию или var) class Basket { protected $item; function __constructor() { $this->item = array(); } function __desctructor() { foreach ($this->item as $key=>$val) { unset($this->item[$key]); } } public function add_item($nr, $amount) { settype($this->item[$nr], "integer"); $this->item[$nr] += $amount; } } А. В. Соловьев, 2007

  41. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (self, parent, static, ::) static – чтобы обратиться к такому свойству или методу не требуется экземпляр класса self – для обращения с данному классу из него самого (в отличие от $this указывает не на конкретный экземпляр, а на весь класс – для статич. методов или свойств) parent – для обращения к родительскому классу class Ext_Basket extends Basket { protected static $counter = 0; function __constructor() { parent::__construct(); self::$counter++; } } А. В. Соловьев, 2007

  42. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (abstract, final, константы) abstract class Basket { const MAXVAL=256; abstract function add_item(); final function get_max() { return self::MAXVAL; } } class Ext_Basket extends Basket { function add_item() { /*…*/ } } echo Basket::MAXVAL; А. В. Соловьев, 2007

  43. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (перегрузка) Перегрузка свойств: void __set(string $имя, mixed $значение); mixed __get(string $имя); Перегрузка методов: mixed __call(string $имя, array $аргументы); class Setter { private $content; function __set($nm, $val) { $this->content[$nm] = $val; } function __get($nm) { return $this->content[$nm]; } } $a = new Setter; $a->proba = 1; echo $a->proba; А. В. Соловьев, 2007

  44. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (перегрузка) Перегрузка свойств: void __set(string $имя, mixed $значение); mixed __get(string $имя); Перегрузка методов: mixed __call(string $имя, array $аргументы); class Setter { private $content; function __set($nm, $val) { $this->content[$nm] = $val; } function __get($nm) { return $this->content[$nm]; } } $a = new Setter; $a->proba = 1; echo $a->proba; А. В. Соловьев, 2007

  45. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (интерфейсы) Интерфейсы объектов позволяют указывать, какие методы и свойства должен включать класс, без необходимости описывания их функционала. Если класс включает какой-либо интерфейс и не описывает функционал всех методов этого интерфейса, выполнение кода с использованием такого класса завершится фатальной ошибкой, сообщающей, какие именно методы не были описаны. interface Stack { public function push($a); public function pop($a); } class LIFO implements Stack { private $data = array(); function __constructor() { /* … */ } public function push($a) { array_push($this->data, $a); } public function pop($a) { return array_pop($this->data); } public function dump() { print_r($this->data); } } А. В. Соловьев, 2007

  46. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (указание типов параметров) Перед именем параметра метода объекта можно указать тип (название класса, интерфейсаили типа “array”). Если функция вызывается с параметром другого типа генерируется ошибка. class SomeClass { function example(array $data, Stack $info) { /* … */ } } Для параметров скалярного типа (int, bool, float, string) указание типа не используется. А. В. Соловьев, 2007

  47. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (операции над объектами) Проверка принадлежности к классу: instanceof (в PHP4 is_a()) class A { /* … */ } $thing = new A; if ($thing instanceof A) { /* … */ } Сравнение объектов: == : свойства объектов просто сравниваются друг с другом, а именно: два объекта равны, если они содержат одинаковые свойства и одинаковые их значения и являются экземплярами одного класса. === : свойства объекта считаются идентичными тогда и только тогда, когда они ссылаются на один и тот же экземпляр класса. Клонирование: Создание копии объекта с абсолютно идентичными свойствами: class A { /* … */ } $a = new A; $b1 = $a; // просто ещё одна ссылка на объект $a $b2 = clone $a; // копия объекта $a А. В. Соловьев, 2007

  48. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 («магические методы») __construct() // конструктор __destruct()// деструктор __call()// перегрузка методов __get()// перегрузка свойств __set()// перегрузка свойств __isset()// перегрузка свойств __unset()// перегрузка свойств __sleep()// сериализация __wakeup()// десериализация __toString()// преобразование в строку __set_state()// для var_export() __clone() // клонирование А. В. Соловьев, 2007

  49. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP Объекты в PHP5 (автозагрузка) function __autoload($class_name) {    require_once $class_name . '.php';}$obj1 = new MyClass1();$obj2 = new MyClass2();  А. В. Соловьев, 2007

  50. ПЕТРОЗАВОДКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЯЗЫК PHP • Вопросы безопасности: Безопасность файловой системы • Поскольку в PHP изначально предполагался полноправный пользовательский доступ к файловой системе, можно написать скрипт, который позволит читать системные файлы, такие как /etc/passwd, управлять сетевыми соединениями, отправлять задания принтеру, и так далее. Как следствие вы всегда должны быть уверены в том, что файлы, которые вы читаете или модифицируете, соответствуют вашим намерениям. • $username = $_POST['user_submitted_name']; • $homedir = "/home/$username"; • $file_to_delete = "$userfile"; • unlink ("$homedir/$userfile"); • echo "$file_to_delete has been deleted!"; • Ограничить доступ пользователя, с правами к-го работает веб-сервер. • Проверять все данные, вводимые пользователем. • Опция php.ini open_basedir А. В. Соловьев, 2007

More Related