- •Федеральное агентство по образованию
- •Таганрогский государственный радиотехнический университет
- •Программирование в Интернет
- •Лекция 1. Введение в Web-программирование
- •Принцип работы Web-приложений
- •Обзор известных средств программирования для Internet
- •Первое решение: cgi
- •Преимущества cgi
- •Недостатки cgi
- •Второе решение: isapi-интерфейс
- •Преимущества isapi
- •Недостатки isapi
- •Третье решение: asp
- •Преимущества asp
- •Недостатки asp
- •Лекция 2. Введение в php
- •Что такое рнр?
- •Архитектура рнр
- •Первая программа на php
- •Взаимодействие html и php
- •Лекция 3. Типы данных php
- •Комментарии
- •Логические переменные
- •Синтаксис логических переменных
- •Приведение значений к логическому типу
- •Целые числа
- •Синтаксис целочисленных переменных
- •Целочисленное переполнение
- •Приведение к целочисленному типу
- •Вещественные числа
- •Константы
- •Преобразование строк
- •Лекция 4. Переменные
- •Изменение типа переменной
- •Преобразование типа переменной
- •Операторы и выражения
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации
- •Дополнительные операторы присваивания
- •Операторы сравнения
- •Логические операторы
- •Увеличение или уменьшение целой переменной
- •Порядок вычисления операторов
- •Динамические переменные
- •Ссылки на переменные
- •Лекция 5. Инструкция if
- •Блок else инструкции if
- •Блок elseif инструкции if
- •Инструкция switch
- •Оператор ?
- •Цикл while
- •Цикл do... While
- •Цикл for
- •Прерывание циклов инструкцией break
- •Пропуск итераций с помощью инструкции continue
- •Лекция 6. Функции
- •Аргументы функции
- •Аргументы по умолчанию
- •Область видимости переменных
- •Лекция 7. Краткий обзор .Net Framework
- •Промежуточный язык Microsoft Intermediate Language
- •Компиляция “Just In Time”
- •Управляемый код и данные
- •Лекция 8. Создание приложений Web Forms Файлы проекта Web Forms
- •Файлы Web-приложения
- •Обработка событий События жизненного цикла Web-приложения
- •Сохранение данных Web-формы
- •Visual Basic .Net
- •Visual c#
- •События Application и Session
- •Visual Basic .Net
- •Visual c#
- •События Web-формы
- •Visual Basic .Net
- •Visual c#
- •События серверных элементов управления
- •Visual Baste .Net
- •Visual c#
- •Лекция 9. Работа с Web-объектами Введение в пространство имен
- •Пространства имен в Web-приложениях Обзор пространства имен Web
- •Visual Basic .Net
- •Visual c#
- •Использование объекта Application
- •Visual Baste .Net
- •Visual c#
- •Использование объекта Page
- •Visual Basic
- •Visual с#
- •Использование объекта Request
- •Visual Baste .Net
- •Visual c#
- •Использование объекта Response
- •Visual Baste .Net
- •Visual c#
- •Лекция 10. Сохранение сведений о состоянии Способы сохранения сведений о состоянии
- •Использование строк запросов
- •Visual Basic .Net
- •Visual c#
- •Использование переменных состояния Application и Session
- •Упорядочение доступа к переменным состояния
- •Visual Basic .Net
- •Visual c#
- •Visual Basic .Net
- •Visual c#
- •Отключение переменных состояния Session
- •Лекция 11. Web-элементы управления. Использование элементов управления.
- •Простые элементы управления
- •Элементы управления Label
- •Элементы управления HyperLink
- •Элементы управления Image
- •Элементы управления CheckBox
- •Элементы управления RadioButton
- •Элементы управления Table
- •Элементы управления DropDownList
- •Элементы управления ListBox
- •Элементы управления CheckBoxList
- •Элементы управления RadioButtonList
- •Лекция 12. Проверяющие элементы управления
- •Использование проверяющих элементов управления
- •RequiredFieldValidator
- •RangeValidator
- •CompareValidator
- •RegularExpression Validator
- •CustomValidator
- •ValidationSummary
- •Отмена проверки вводимых данных
- •Лекция 13. Введение в Web-сервисы Обзор Web-сервисов xml
- •Инфраструктура Web-сервисов xml
- •Взаимодействие клиентов и Web-сервисов xml
- •Лекция 14. Механизм обнаружения Web-сервисов xml
- •Использование Web-сервисов xml
- •Добавление Web-ссылки
- •Генерация класса прокси
- •Создание объекта класса прокси
- •Доступ к Web-сервису xml через объект прокси
- •Сериализация
- •Лекция 15. Управление Web-методами при помощи атрибутов Атрибуты Web-метода
- •Буферизация откликов Web-метода
- •Visual c#
- •Пользовательские маркеры
- •Подписи
- •Шифрование
- •Лекция 17. Модель безопасности asp.Net
- •Лекция 18. Введение в инфраструктуру Microsoft .Net Remoting
- •Объекты .Net Remoting
- •Передача объектов по механизму .Net Remoting
- •Пример кода для простого серверного объекта .Net Remoting
- •Срок жизни, определяемый арендой
- •Channel Services (System.Runtime.Remoting.Channels)
- •Пример кода, загружающего Channel Services
- •Форматирующие объекты сериализации (System.Runtime.Serialization.Formatters)
Аргументы функции
Передача данных в функции осуществляется с помощью списка аргументов, который представляет собой список переменных и/или констант, разделенных запятыми. По умолчанию в PHP реализована передача аргументов по значению. Это означает, что если значение аргумента внутри функции изменяется, то тем самым модифицируется значение только локальной копии аргумента, и все изменения такого аргумента за пределами функции будут не видны.
<?php
function addFive($num)
{
$num +=5;
}
$orig = 10;
addFive( $orig );
print $orig; // выводится 10 !!!
?>
Если необходимо вернуть в вызывающую программу модифицированное значение, необходимо использовать передачу данных по ссылке.
<?php
function addFive($num)
{
$num +=5;
}
$orig = 10;
addFive( &$orig ); // передача аргумента по ссылке при вызове функции
print $orig; // выводится 15 !!!
?>
или (предпочтительно !)
<?php
function addFive( &$num ) // передача аргумента по ссылке
{
$num +=5;
}
$orig = 10;
addFive( $orig );
print $orig; // выводится 10 !!!
?>
Аргументы по умолчанию
Некоторые из аргументов функции можно сделать необязательными, уменьшив, таким образом, требовательность функции. Начиная с версии PHP 4 можно использовать значения аргументов, подставляемые по умолчанию. Делается это следующим образом:
function make_coffee( $type = “кофе с молоком” )
{
print “Сделайте чашечку $type. \n”;
}
…
make_coffee();
make_coffee(“капучино”);
Значение по умолчанию должно представлять собой константное выражение и не может являться переменной. Все аргументы, для которых предусмотрено значение по умолчанию, в списке аргументов должны следовать после обязательных аргументов.
function make_yogurt( $flavour, $type = “йогурт” )
{
print “Заказан $flavour $type”;
}
…
make_yogurt(“черничный”); // результат – Заказан черничный йогурт
Область видимости переменных
Область видимости переменных представляет собой контекст, в рамках которого действительно ее определение. В большинстве случаев переменные РНР имеют одну область видимости. Кстати, это понятие распространяется на включаемые с помощью include файлы. Например:
$а = 1;
include "b.inc";
Здесь переменная $а доступна (видна) программному коду внутри файла b.inc. Однако внутри любой функции автоматически активизируется локальная область видимости: любая переменная, определенная внутри функции, ограничена ее пределами. Например:
$а = 1; // глобальная область видимости
Function Test () {
echo $a; /* ссылка на локальную (!) переменную */
}
Test ();
Функция еcho пытается использовать значение локальной переменной $a, которая не получила еще никакого значения. Это важное отличие РНР от Си и Perl, где по умолчанию используется глобальное определение переменных!
В РНР необходимо явно объявлять переменные глобальными внутри функций для использования внешних переменных. Например:
$а = 1; $b = 2;
Function Sum(){
global $а, $b;
$b = $а + $b;
}
Sum ();
echo $b;
Объявление переменных $а и $b внутри функции глобальными раз и навсегда переводит все ссылки на эти переменные в область видимости, внешнюю по отношению к этой функции. Никаких ограничений на количество глобальных переменных, определяемых таким образом, не накладывается.
Переменные с глобальной областью видимости могут быть считаны или установлены с помощью специального массива $GLOBALS. С его помощью мы можем переписать предыдущий пример вот так:
$а = 1;
$b = 2;
Function Sum ()
{
$GLOBALS [“b”] = $GLOBALS [“a”] + $GLOBALS [“b”];
}
Sum ();
echo $b;
Массив $GLOBAIS представляет собой ассоциативный массив, в котором ключом является имя глобальной переменной, а содержимое этой переменной — значением элемента массива.
Следующий важный момент в работе механизма области видимости является понятие статической переменной. Статическая переменная существует только в пределах видимости локальной функции, однако не прекращает своего существования, когда выполнение функции завершается. Допустим, необходимо подсчитать число вызовов функции Test().Обратимся к примеру:
Function Test () {
$а = 0;
echo $a:
$а++;
}
Как и следует ожидать, это определение функции совершенно бесполезно. Каждый ее вызов завершается одинаково: она выводит на экран 0, поскольку переменная $a всегда получает значение равное 0. Эта переменная создается при входе в функцию и уничтожается при ее завершении, поэтому инкрементирование переменной заканчивается ничем: она уничтожается, а при очередном вызове функции создается заново. Чтобы реализовать подсчет количества вызовов функции Test() , можно либо использовать глобальную переменную, либо объявить переменную $а как статическую:
Function Test (){
static $a = 0;
echo $a;
$a++;
}
Теперь переменная инкрементируется при каждом обращении к функции Test().
Лекция 7. Одно из наиболее значительных улучшений в ASP.NET заключается в способе работы с исходным текстом в среде исполнения (runtime). Модели разработки ASP и ASP.NET похожи, но скрытые механизмы этих технологий сильно отличаются. В ASP.NET вместо интерпретации исходной страницы при каждом обращении клиента страница компилируется, преобразуясь в формат промежуточного языка MSIL (Microsoft Intermediate Language) лишь при первом обращении. После компиляции страницы в MSIL JIT-компилятор (Just In Time compiler) преобразует MSIL в машинный код.
Примечание. Можно не ожидать первого запроса страниц ASP.NET, а сразу принудительно скомпилировать все страницы в формат MSIL – это позволяет выявить синтаксические и другие ошибки.