Главный успешный сценарий.
Разница кавычек и апострофов.
Внутри кавычек можно вставлять спец. символы, которые не работают внутри апострофов.
\r – возврат каретки;
\n – перевод строки.
Эти специальные символы могут потребоваться, если из программы на php необходимо будет сформировать результирующую страницу html.
Здесь показать, как выглядит HTML страница при наличии специальных символов и без них.
Можно пользоваться парой символов, но работают и каждый из них поодиночке.
Если запустить этот файл, то увидим, что спецсимволы внутри апострофов воспринимаются, как обычный текст.
Переменные, операторы и комментарии.
Integer – целые
Double – вещественные
String - строки
Bool - логический тип, может иметь значения true false
Array - массив.
Все имена переменных начинаются с $. При этом специально описывать тип переменной не нужно. Тип определяется в момент присваивания ей значения
Т.е. одну и ту же переменную можно сделать переменной разных типов.Поэтому существуют полезные функции:
Gettype (<переменная>) – возвращает тип переменной;
Isset (<переменная>) - возвращает true, если переменная определена.
Конкатенация.
Оператор . (точка) производит конкатенацию, т.е. объединение двух строк в одну.
$z=” String1”.”String2”; // Значение z “Strng1String2”
Очень часто необходимо сформировать строку , состоящую из имени переменной и ее значения.
В этом месте говорю о том, что можно не писать HTML теги
Lt;?php
$x=1;
echo "Значение х=$x <br>";
echo 'Значение х=$x ';
?>
Результаты вывода:
Значение х=1
Значение х=$x
Во втором случае правильно так.
Echo ‘Значение x=’.$x;
Т.е. строка в кавычках извлекает значение указанной переменной. Строка в апострофах – заносит указанные символы, как есть.
<?php
$var="Веселая строка";
echo "var= $var и ее тип=". gettype($var)." <br> \r\n";
$var = 15;
echo 'А теперь var='.$var.' и ее тип = '.gettype($var);
?>
Результаты вывода
Var=Веселая строка и ее тип = string
А теперь var=15 и ее тип = integer
Массивы.
Самой простой способ создать массив – использовать команду array.
$myArray = array(‘one’, 2, ‘3’);
Для доступа к элементам массива используются квадратные скобки.
Echo array[0]; // Выводит one.
Если надо распечатать весь массив можно использовать функцию print_r(Массив)
Print_r($myArray)
Array([0]=>one [1]=>2 [2]=>3)
Элементы в конец массива можно добавлять с помощью обычного оператора присваивания.
$myArray[ ]=’четвертый элемент’;
Как правило в качестве индексов массивов используются числа. Но их можно заменить и строками. В этом случае массив будет называться ассоциативным, так как он ассоциирует (сопоставляет) значения с индексами, которые имеют определенный смысл.
$birthdays[‘Ivanov”] = ‘1978-04-11’;
$birthday[‘Petrov’] = ‘1978-05-12’;
Ассоциативные массивы также создаются с помощью команды array. Вот как это делается.
$birthdays = array(‘Ivanov’ => ‘1978-04-11’, ‘Petrov’ => ‘1978-05-12’);
Теперь, чтобы узнать дату рождения можно использовать имя в качестве индекса.
Echo ‘Мой день рождения’ . $birthdays[‘Ivanov’];
Глобальные ассоциативные массивы.
При передаче параметров через ссылки РНР создает глобальные ассоциативные массивы
$_GET и $_REQUEST.
Допустим, мы передаем имя name=’Ivanov’ и age=22, т.е. была ссылка
<a href=”Privet.php?name=’Ivanov’&age=22>
Будет создан глобальный ассоциативный массив
$_GET = array(‘name’ =>’Ivanov’, ‘age’=>22);
Чтобы найти эти значения.
<?php
$name = $_GET['name'];
$age=$_GET[‘age’];
echo 'Добро пожаловать в наше приложение, ' . $name. '!';
echo “<br> Мы знаем, что Вам $age года”;
?>
Управляющие конструкции.
IF
<?php
$name = $_REQUEST['firstname'];
if ($name == 'Ivanov')
echo "Добро пожаловать, уважаемый разработчик!";
else
echo 'Добро пожаловать в наше приложение, ' . $name. '!';
?>
WHILE
$count=1;
While ($count <=10)
{
Echo “$count”;
++$count;
}
FOR
For(<начальное значение>;<Условие выхода>;<приращение>)
For ($count=1; $count<=10; ++$count)
Echo $count;
Пример лабораторной работы 1.
Главный успешный сценарий.
1. Пользователь запрашивает начальное меню для выбора объекта по порядковому номеру в списке.
2. Система отсылает пользователю меню.
3. Пользователь выбирает объект.
4. Система находит запрошенный объект, формирует и отсылает пользователю HTML страничку с его описанием и ссылкой для возврата в начальное меню.
5. Пользователь просматривает описание найденного объекта и нажимает ссылку для возврата в начальное меню
6. Система отсылает пользователю меню выбора объекта.
7. Пользователь выбирает ссылку для выхода из системы.
8. Система отсылает пользователю завершающую страницу и заканчивает работу.
Расширения.
4.А. РНР скрипт обнаруживает, что пользователь не передал параметры для поиска объекта, формирует и отсылает пользователю HTML страницу с соответствующим сообщением и ссылкой для возврата в главное меню.
Объекты поиска это книги. Параметры каждой книги:
· Уникальный шифр книги
· Автор
· Название
· Год издания.
Массив, содержащий 4-5 единиц товаров, формируется РНР контроллером непосредственно в оперативной памяти.
В этом месте нарисовать картинку с одним контроллером и несколькими шаблонами. Пояснить, какие шаблоны должны иметь какое расширение.
Include ‘<имя файла>’
Конструкция include предназначена для включения файлов в код сценария PHP во время исполнения сценария PHP.
PHP преобразует сценарий во внутреннее представление, анализируя строки сценария по очереди, пока не доходит до конструкции include. Дойдя до include, PHP прекращает транслировать сценарий и переключается на указанный вinclude файл. Таким образом из-за подобного поведения транслятора, быстродействие сценария снижается, особенно при большом колличестве включаемых с помощью include файлов. С require таких проблем нет, поскольку файлы с помощью require включаются до выполнения сценария, то есть на момент трансляции файл уже включен в сценарий.
Таким образом, целесообразнее использовать конструкцию require там, где не требуется динамическое включение файлов в сценарий, а конструкцию include использовать только с целью динамического включения файлов в код PHP скрипта.
Скрипт на PHP index.php
<?php
$items = array(
array('id' =>100, 'desc' => 'Русско-английский словарь', 'price' => 24.95),
array('id' =>200, 'desc' => 'Путеводитель по Китаю', 'price' => 13.28),
array('id' =>300, 'desc'=> 'Программирование на PHP', 'price' => 18.80),
array('id' =>400, 'desc' => 'Книга для души', 'price' => 100.20));
if (isset($_GET['out']))
{
include 'goodbye.php';
exit();
}
If (!isset($_GET['nom']))
{
include 'ref.html';
exit();
}
if ($_GET['nom'] == NULL)
{
$output="Вы забыли ввести номер книги <br><br>";
include 'forget.php';
exit();
}
if ($_GET['nom'] != NULL)
{
$nom = $_GET['nom'];
$book=$items[$nom]; //Создаем одномерный ассоциативный массив $book и заносим в него описание запрошенной книги
include 'output.php';
exit();
}
?>
HTML меню ref.html
<html>
<head> <!-- Техническая информация о документе -->
<title> Передача номера книги. </title>
<meta http-equiv="Content_type" content="text/html; charset=UTF-8">
</head>
<body bgcolor = silver text = green link=red vlink=blue>
<br><br><br>
<div align=center>
<a href="http://Localhost/Lab1_1/?nom=1"> Прошу книгу 1 </a><br><br>
<a href=" ?nom=2"> Прошу книгу 2 </a><br><br>
<a href="?nom"> Прошу книгу 3 </a><br><br><br><br>
<a href="?out=1"> Нажмите для выхода из системы </a><br><br><br><br>
</div>
</body> </html>.