
- •Обработка динмачиской html страницы
- •Назначение и виды веб серверов
- •Способы встраивания php скрипта в html код
- •Переменные и константы в php. Область определения переменных
- •Область видимости переменных
- •Переменные переменные
- •Константы
- •5. Особенности синтаксиса php
- •6. Глобальные и статические переменные php Глобальные переменные в php
- •Статические переменные в php
- •7. Система типов языка php
- •8. Вывод данных в php
- •Арифметические операторы php
- •Логические операторы php
- •Строковые операторы php
- •Операторы присвоения в php
- •Операторы сравнения в php
- •Операторы инкремента и декремента в php
- •Операторы эквивалентности php
- •Операции с символьными переменными в php
- •Приоритеты выполнения операторов в php
- •Операторы исполнения внешних команд в php
- •Операторы для работы с массивами php
- •Операторы управления ошибками php
- •Операторы классов php
- •Поиск и замена подстрок
- •Регулярные выражения
- •Жадные и ленивые квантификаторы в регулярных выражениях
- •Использование html-форм для передачи данных на сервер
- •Для метода get
- •Для метода post
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Замечание
- •Типы ресурсов Предопределенные константы
- •Проверка существования файла
- •Функция file_exists
- •Функция is_writable
- •Функция is_readable
- •I. Открытие файла
- •II. Манипуляции с данными файла
- •III. Закрытие файла
- •Запись в файл
- •Чтение из файла
- •Взаимодействие php и MySql
- •Создание базы данных с помощью html-формы
- •Листинг 1. Код html-формы
- •Листинг 2. Код записывающей html-формы
Операторы классов php
Оператор проверки принадлежности к классу
Оператор instanceof используется для определения того, является ли текущий объект экземпляром указанного класса.
Оператор instanceof был добавлен в PHP5. До этого использовалась функция is_a(), которая на данный момент не рекомендуется к применению, более предпочтительно использовать оператор instanceof.
<?php class A { } class B { } $thing = new A; if ($thing instanceof A) { echo 'A'; } if ($thing instanceof B) { echo 'B'; } ?>
Поскольку объект $thing является экземпляром класса A, и никак не B, то будет выполнен только первый, опирающийся на класс A, блок:
A
Пользовательские функции в PHP
В любом языке программирования существуют подпрограммы. В языке C они называются функциями, в ассемблере - подпрограммами, а в Pascal существуют даже два вида подпрограмм: процедуры и функции.
Подпрограмма - это специальным образом оформленный фрагмент программы, к которому можно обратиться из любого места внутри программы. Подпрограммы существенно упрощают жизнь программистам, улучшая читабельность исходного кода, а также сокращая его, поскольку отдельные фрагменты кода не нужно писать несколько раз
В PHP такими подпрограммами являются пользовательские функции.
Помимо встроенных функций PHP, часто возникает необходимость создания пользовательских функций, выполняющих определенные задачи.
Особенности пользовательских функций PHP
Перечислим особенности пользовательских функций в PHP:
Доступны параметры по умолчанию. Есть возможность вызывать одну и ту же функцию с переменным числом параметров;
Пользовательские функции могут возвращать любой тип;
Область видимости переменных внутри функции является иерархической (древовидной);
Есть возможность изменять переменные, переданные в качестве аргумента.
В PHP программисту дана достаточно высокая свобода при создании пользовательских функций. В отличии от языка C++ в пользовательских функциях доступны параметры по умолчанию.
Недостатком пользовательских функций PHP являются:
1. Невозможность объявления локальных функций. В PHP вы не можете объявить локальную функцию, как это можно сделать в других языках программирования. Попросту говоря, вы не можете создать функцию внутри другой функции таким образом, чтобы первая (вложенная) функция была видна только во второй функции. В PHP вложенная функция будет доступна всей программе (скрипту), а значит не будет локальной.
Рассмотрим пример:
<?php function first_function() { echo "<h4>Первая пользовательская функция</h4>"; function second_function() { echo "<h5>Вторая пользовательская функция</h5>"; } } first_function(); second_function(); ?>
В рассмотренном примере сценарий выведет:
Первая пользовательская функция Вторая пользовательская функция
Значит, обе функции доступны программе. Это говорит о том, что вторая функция не является локальной.
2. Второй недостаток пользовательских функций PHP связан с областью видимости функций. Чтобы разобраться в этой категории, необходимо пояснить, какие переменные являются глобальными, а какие - локальными.
Глобальные переменные - это переменные, которые доступны всей программе, включая подпрограммы (функции).
Локальные переменные - переменные, определенные внутри подпрограммы (функции). Они доступны только внутри функции, в которой они определены.
Для PHP все объявленные и используемые в функции переменные по умолчанию локальны для функции. То есть, по умолчанию нет возможности изменить значение глобальной переменной в теле функции.
Если вы в теле пользовательской функции будете использовать переменную с именем, идентичным имени глобальной переменной (находящейся вне пользовательской функции), то никакого к отношения глобальной переменной эта локальный переменная иметь не будет. В данной ситуации в пользовательской функции будет создана локальная переменная с именем, идентичным имени глобальной переменной, но доступна данная локальная переменная будет только внутри этой пользовательской функции.
Поясним данный факт на конкретном примере:
<?php $a = 100; function funct() { $a = 70; echo "<h4>$a</h4>"; } funct(); echo "<h2>$a</h2>"; ?>
Сценарий выведет сперва 70, а затем 100:
70 100
Для избавления от приведенного недостатка, в PHP существует специальная инструкция global, позволяющая пользовательской функции работать с глобальными переменными. Подробнее об этом можете узнать здесь
Создание пользовательских функций
Пользовательская функция может быть объявлена в любой части программы (скрипта), до места ее первого использования. И не нужно никакого предварительного объявления, как в других языках программирования, в частности, в C. Преимущества применяемого в PHP подхода в следующем.
Дойдя до определения пользовательской функции, транслятор проверит корректность определения и выполнит трансляцию определения функции во внутреннее представление, но транслировать сам код он не будет. И это правильно - зачем транслировать код, который, возможно, вообще не будет использован. Синтаксис объявления функций следующий:
function Имя (аргумент1[=значение1],...,аргумент1[=значение1]) { тело_функции }
Объявление функции начинается служебным словом function, затем следует имя функции, после имени функции - список аргументов в скобках. Тело функции заключается в фигурные скобки и может содержать любое колличество операторов.
Требования, предъявляемые к именам функций:
Имена функций могут содержать русские буквы, но давать функциям имена, состоящие из русских букв не рекоммендуется;
Имена функций не должны содержать пробелов;
Имя каждой пользовательской функции должно быть уникальным. При этом, необходимо помнить, что регистр при объявлении функций и обращении к ним не учитывается. То есть, например, функции funct() и FUNCT() имеют одинаковые имена;
Функциям можно давать такие же имена, как и переменным, только без знака $ в начале имен.
Типы значений, возвращаемые пользовательскими функциями, могут быть любыми. Для передачи результата работы пользовательских функций в основную программу (скрипт) используется конструкция return. Если функция ничего не возвращает, конструкцию return не указывают. Конструкция return может возвращать все, что угодно, в том числе и массивы.
Приведем примеры использования пользовательских функций:
<?php function funct() { $number = 777; return $number; } $a = funct(); echo $a; ?>
В рассмотренном примере функция funct возвращает с помощью конструкции return число 777. Возвращенное функцией значение присваивается глобальной переменной $a, а затем оператор echo выводит значение переменной $a в браузер. В результате мы увидим в браузере число 777.
Далее мы рассмотрим возможности PHP по передаче параметров пользовательских функций.
Функция объявляется при помощи ключевого слова function, после которого в фигурных скобках записываются различные операторы, составляющие тело функции:
function MyFunction()
{
// операторы
}
Если функция принимает аргументы, то они записываются как переменные в объявлении функции. Аргумент функции представляет собой переменную, передаваемую в тело функции для дальнейшего использования в операциях. В случае, когда функция принимает больше одного аргумента, эти переменные разделяются запятыми:
function MyFunction($var, $var1, $var2)
Если функция возвращает какое-либо значение, в теле функции обязательно должен присутствовать оператор return:
function MyFunction()
{
return $ret; // возвращается значение переменной $ret
}
Пример простой функции.
<?
function get_sum()
{
$var = 5;
$var1 = 10;
$sum = $var + $var1;
return $sum;
}
echo(get_sum()); // выводит 15
?>
В этом примере показана функция, вычисляющая сумму двух чисел. Эта функция не принимает ни одного аргумента, а просто вычисляет сумму и возвращает полученный результат. После этого, она вызывается в теле оператора echo для вывода результата в браузер. Модифицируем эту функцию так, чтобы она не возвращала полученный результат, а выводила его в браузер. Для этого достаточно внести оператор echo в тело функции:
<?
function get_sum()
{
$var = 5;
$var1 = 10;
$sum = $var + $var1;
echo $sum;
}
get_sum();
?>
Переменные $var и $var1 мы можем объявить как аргументы и в этом случае в теле функции их определять не надо:
<?
function get_sum($var, $var1)
{
$sum = $var + $var1;
echo $sum;
}
get_sum(5,2); // выводит 7
?>
Переменная, содержащая значение, переданное через аргумент, называется параметром функции.
В рассмотренных примерах аргументы функции передаются по значению, т. е. значения параметров изменяется только внутри функции, и эти изменения не влияют на значения переменных за пределами функции:
<?
function get_sum($var) // аргумент передается по значению
{
$var = $var + 5;
return $var;
}
$new_var = 20;
echo(get_sum($new_var)); // выводит 25
echo("<br>$new_var"); // выводит 20
?>
Для того чтобы переменные переданные функции сохраняли свое значение при выходе из нее, применяется передача параметров по ссылке. Для этого перед именем переменной необходимо поместить амперсанд (&):
function get_sum($var, $var1, &$var2)
В этом случае переменные $var и $var1 будут переданы по значению, а переменная $var2 - по ссылке. В случае, если аргумент передается по ссылке, при любом изменении значения параметра происходит изменение переменной-аргумента:
<?
function get_sum(&$var) // аргумент передается по ссылке
{
$var = $var + 5;
return$var;
}
$new_var = 20;
echo(get_sum($new_var)); // выводит 25
echo("<br>$new_var"); // выводит 25
?>
Функции обработки строк
Введение
Эти функции предназначены для выполнения различных манипуляций со строками. Более специализированные функции см. в разделах, посвященных регулярным выражениям и обработке URL.
Для получения общей информации о работе со строками, особенно об использовании одиночных и двойных кавычек и экранировании символов, смотрите главу "Строки" в разделе "Типы" .
Требования
Эти функции всегда доступны.
Установка
Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.
Предопределенные константы
Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.
CRYPT_SALT_LENGTH integer
CRYPT_STD_DES integer
CRYPT_EXT_DES integer
CRYPT_MD5 integer
CRYPT_BLOWFISH integer
HTML_SPECIALCHARS (integer)
HTML_ENTITIES (integer)
ENT_COMPAT (integer)
ENT_QUOTES (integer)
ENT_NOQUOTES (integer)
CHAR_MAX (integer)
LC_CTYPE (integer)
LC_NUMERIC (integer)
LC_TIME (integer)
LC_COLLATE (integer)
LC_MONETARY (integer)
LC_ALL (integer)
LC_MESSAGES (integer)
STR_PAD_LEFT (integer)
STR_PAD_RIGHT (integer)
STR_PAD_BOTH (integer)