Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
модуль пхп.doc
Скачиваний:
7
Добавлен:
29.08.2019
Размер:
713.22 Кб
Скачать

Операторы классов 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)