Читайте также:
|
|
При передаче функции большого количества параметров, чем их предусмотрено в определении, лишние параметры будут просто проигнорированы. Если передается меньшее количество, то пропущенным параметрам присваивается значение null и при этом может быть выведено соответствующее предупредительное сообщение, что в конечном итоге не приведет к остановке выполнения кода. Вместе с тем, в определении функции можно указать значение параметров, принимаемые по умолчанию. Для задания значений по умолчанию используется оператор присваивания непосредственно в списке формальных параметров определения функции.
Пример:
<?php
function Srec ($w =10, $h =5){
$S = $w * $h;
return $S;
}
echo Srec (); //возвращает 50
echo "<br>";
echo Srec (6); //возвращает 30
?>
Внимание! При задании параметров в определении функций значений по умолчанию, последние должны быть простыми значениями, а не переменными, вычисляемыми выражениями или вызовами функций и методов объектов.
Если в списке используются параметры без значений по умолчанию, а также параметры с заданными значениями по умолчанию, то последние должны располагаться в правой части списка, т.е. за теми параметрами, для которых значения по умолчанию не предусмотрены.
При создании функций, способных работать с переменными по длине списком параметров, можно применить следующие встроенные функции:
· func_num_args() — возвращает количество параметров, переданных функции, из которой она была вызвана.
Пример:
<?php
function Srec (){
if (func_num_args ()= =0){ //если нет параметоров
$w =10;
$h =5;
}
if (func_num_args ()= =1){//если один параметр
$h =5;
}
return $w * $h;
}
echo Srec (); //возвращает 50
echo "<br>";
echo Srec (6); //возвращает 0
?>
· func_get_args() — возвращает массив значений параметров, переданных функции, из кторой она была вызвана.
Пример:
<?php
function Srec (){
/*значения параметров по умолчанию: */
$w =10;
$h =5;
$args = func_get_args (); //массив значений параметров
$narg = count (func_get_args ());//длина массива значений параметров
if ($narg = =1) $w = $args [0];
if ($narg ==2) { //если два параметра
$w = $args [0];
$h = $args [1];
}
return $w * $h;
}
echo Srec (); //возвращает 50
echo "<br>";
echo Srec (6); //возвращает 30
echo "<br>";
echo Srec (6,4); //возвращает 24
?>
· func_get_arg(номер параметра) — возвращает значение параметра, указанного с помощью его номера. Если номер_параметра превышает длину списка переданных параметров, то данная функция возвращает false. Обычно эта функция используется совместно с func_num_args() и func_get_args().
Пример:
<?php
function Srec (){
echo "w=". func_get_arg (0)."h=". func_get_arg (1);
}
echo Srec (); //w = h
echo "<br>";
echo Srec (2); // w = 2 h =
echo "<br>";
echo Srec (6,4); // w = 6 h = 4
?>
Пример использования двух функций:
<?php
function myRec ()
{ for ($i =0; $i < func_num_args (); $i ++) {
for ($j =0; $j < $i; $j ++);
echo func_get_arg ($i)."<br>\n"; // выводим элемент
}
}
// отображаем строки
echo myRec ("Меркурий", "Венера", "Земля", "Марс");
?>
В окне веб-браузера это будет выглядеть ТАК.
Обратите внимание на то, что при описании Srec() и myRec() мы указали пустые скобки в качестве списка параметров, словно функции не получает ни одного параметра. На самом деле в PHP при вызове функции можно указывать параметров больше, чем задано в списке аргументов — в этом случае никакие предупреждения не выводятся (но если фактическое число параметров меньше, чем указано в описании, PHP выдаст сообщение об ошибке). "Лишние" параметры как бы игнорируются, в результате пустые скобки вSrec() и myRec() позволяют нам в действительности передать им сколько угодно параметров.
ООП основные понятия
Что такое объектно-ориентированное программирование?
Если вы когда-то создавали собственные функции в PHP и использовали их, то вы использовали такой стиль программирования, как процедурный. В процедурном программировании вы обычно создаете структуры данных - числа, строки, массивы и т.д. - для хранения каких-то данных, а затем обрабатываете эти структуры специальными функциями, которые манипулируют этими данными.
Объектно-ориентированное программирование, или ООП, пошло вперед, так как здесь мы храним структуры данных и функции, их обрабатывающие, в одной сущности, называемой объектом. Вместо того, чтобы обработать данные какой-либо функцией, вы загружаете эти данные в объект, а затем вызываете его методы для манипулирования ими и получаете желаемый результат.
Чаще всего объекты, создаваемые с помощью ООП, отражают реальные сущности. Например, если вы создаете форум для своего сайта, вам следовало бы создать объект Member, который будет хранить информацию о каждом участнике форума (имя, логин, электронный адрес, пароль и др.), а также методы, которые будут обрабатывать эту информацию (регистрация, авторизация, выход из системы, бан и т.д.).
Зачем использовать ООП?
Процедурный и объектно-ориентированный - это два разных способа сделать одно и то же. Нельзя сказать, что один из них лучше другого - каждый пишет, как ему нравится, так что вы даже можете легко комбинировать эти два подхода в одном скрипте.
Однако, вот некоторые преимущества ООП для разработчиков:
· Легче отражать реальные ситуации: как я отметил выше, объекты отражают реальные сущности - люди, товары, карточки, статьи в блогах и др. Это во многом упрощает задачу, когда вы только начинаете проектировать свое приложение, так как назначение каждого объекта, как и цель отношений между объектами, будет ясно и понятно.
· Легче писать модульные программы: ООП предполагает написание модулей. Разделяя код на модули, вам будет легче им управлять, дебажить и расширять его.
· Легче писать код, который будет использоваться много раз: написание кода, который можно будет использовать не один раз, сэкономит время при написании приложения, и со временем вы даже можете создать целую библиотеку такого рода модулей, которые вы сможете использовать во многих приложениях. С помощью ООП становится сравнительно легче писать такой код, так как структуры данных и функции инкапсулируются в единственный объект, который можно использовать любое количество раз.
17. ООП в PHP: классы, конструкторы, интерфейсы, константы.
18. ООП В PHP: абстрактные классы и методы, спецификаторы доступа, наследование.
19. ООП В PHP: область видимости, статические члены класса, специальные методы.
Дата добавления: 2015-08-18; просмотров: 79 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Особенности пользовательских функций PHP | | | Обработка ошибок и исключений в PHP |