Первое знакомство с функциями php для начинающих

Значение функций для программирования неоценимо. Благодаря им появилась возможность повторного использования кода. Нужно лишь разместить вызов функции в конкретном месте программы, и передать ей новые значения аргументов. Не являются исключением из правил и функции php.

Синтаксис функций в php

Синтаксис функций в php

В каждом языке программирования работа с функциями имеет свои «тонкости». Рассмотрим их особенности в php:

  • Определение функции выглядит следующим образом:
function имя_функции (параметры)
{
   //тело функции

}

Параметры могут быть пустыми. Имя указывается после обязательного слова function. При этом имена функций являются независимыми от регистра.

Это значит, что при объявлении function Main() и function main() подразумевается одна и та же функция. А при вызове одной из них интерпретатор выдаст сообщение об ошибке:

выдаст сообщение об ошибке
  • В теле функции может находиться любой код. В том числе и определение другой функции. При этом определение может быть расположено в любом месте кода. То есть, в php имеет значение лишь расположение вызова функции;
  • Функция может возвращать лишь одно значение, или ничего. Возврат более одного значения не возможен. При этом тип возвращаемого значения может быть любым.

Пример:

function MyFunc () {
  $a=1;
	return $a;
}
echo MyFunc ();

В результате будет возвращена 1.

Множественную передачу значений можно осуществить при использовании в php массива в функции.
Пример:

function asq($a){
$x=$a*$a;
$y=$a*$a*$a;
return array($x,$y);
}
list($kvd,$kub)=$asq(15);

В теле функции задаются значения переменным x и y. Затем с помощью встроенной функции array() они записываются в массив.

Значение элементам массива задается при вызове функции с помощь list().

  • Вызов функции php имеет синтаксис:
имя_функции(аргумент 1, аргумент 2…аргумент n);

Пример:

function MyFunc ($a,$b,$c=0){
  $a=$b+$c;
	return $a;
}
echo MyFunc (0,1,2);

Функция вернет 3.

В коде сначала идет определение функции. В нем сразу происходит инициализация переменных, куда будут записываться передаваемые аргументам значения. В теле функции все аргументы складываются. Сумма всех значений записывается в переменную, а затем возвращается.

Функция вернет 3

Анонимные функции в php

Анонимные функции в php появились недавно, начиная с версии 5.3. В более ранних версиях языка их поддержка не была реализована.

Перед использованием анонимных функций убедитесь, что ваш интерпретатор поддерживает их. Для этого используйте встроенную функцию phpinfo(). После ее вызова в окне браузера отобразится вся информация о поддерживаемой версии php.

Анонимные функции в php

Анонимной называется функция, определение которой происходит без указания имени. То есть ее определение происходит в месте вызова. При создании анонимной функции к ней обращаются напрямую, или переменной присваивается ссылка на нее.

Рассмотрим на примерах:

$func1 = function(){

  	return  1;
  };               
$x = $func1(); 
echo $x();

Здесь ссылка на анонимную функцию присваивается переменной func1. Затем переменная x инициализируется значением func1 и выводится с помощью echo():

$input = array(1, 2, 3, 4, 5);
$output = array_filter($input, function ($v) { return $v > 2; });

В примере автономная функция function ($v) { return $v > 2; } вызывается напрямую в месте определения. Она передается в качестве второго аргумента стандартной функции array_filter().

Функция mail()

Набор стандартных (встроенных) функций в php довольно широк. Многие из них реализуют основные возможности веб-сферы.

Одной из таких является функция mail(). Она отправляет сообщение на указанный почтовый ящик. Ее синтаксис:

[bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])

Описание принимаемых параметров:

  • to –адрес получателя письма. Должен соответствовать стандарту user@example.com;
  • subject – тема письма;
  • message – отправляемое сообщение. При этом каждая строка сообщения должна вмещать в себя не более 70 символов. Строки разделяются символом перевода строки (\n).

Если отправка письма происходит непосредственно на SMTP-сервер с машины на основе Windows, то все точки в конце каждой строки будут удалены. Во избежание этого следует заменить все одиночные точки на двойные с помощью кода:

$text = str_replace("\n.", "\n..", $text);

Необязательные параметры функции mail():

  • additional_headers – вставляется в конце заголовков отправляемого письма. Используется для добавления заголовков.

Пример отправки простого письма:

$message = "Line 1\nLine 2\nLine 3";
$message = wordwrap($message, 70);
mail('caffeinated@example.com', 'My Subject', $message);

А вот пример полностью рабочей формы для отправки сообщений:

пример полностью рабочей формы

Вот ее код php:

<?php
  $msg_box = ""; // в этой переменной будем хранить сообщения формы

    if($_POST['btn_submit']){
        $errors = array(); // контейнер для ошибок
        // проверяем корректность полей
        if($_POST['user_name'] == "")    $errors[] = "Поле 'Ваше имя' не заполнено!";
        if($_POST['user_email'] == "")   $errors[] = "Поле 'Ваш e-mail' не заполнено!";
        if($_POST['text_comment'] == "") $errors[] = "Поле 'Текст сообщения' не заполнено!";

        // если форма без ошибок
        if(empty($errors)){
            // собираем данные из формы
            $message  = "Имя пользователя: " . $_POST['user_name'] . "<br/>";
            $message .= "E-mail пользователя: " . $_POST['user_email'] . "<br/>";
            $message .= "Текст письма: " . $_POST['text_comment'];
            send_mail($message); // отправим письмо
            // выведем сообщение об успехе
            $msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
        }else{
            // если были ошибки, то выводим их
            $msg_box = "";
            foreach($errors as $one_error){
                $msg_box .= "<span style='color: red;'>$one_error</span><br/>";
            }
        }
    }

    // функция отправки письма
    function send_mail($message){
        // почта, на которую придет письмо
        $mail_to = "my@mail.ru";
        // тема письма
        $subject = "Письмо с обратной связи";

        // заголовок письма
        $headers= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=utf-8\r\n"; // кодировка письма
        $headers .= "From: Тестовое письмо <no-reply@test.com>\r\n"; // от кого письмо

        // отправляем письмо
        mail($mail_to, $subject, $message, $headers);
    }

Код html:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Обратная связь</title>
</head>
<body>
    <br/>
    <?= $msg_box; // вывод сообщений ?>
    <br/>
    <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" name="frm_feedback">
        <label>Ваше имя:</label><br/>
        <input type="text" name="user_name" value="<?=($_POST['user_name']) ? $_POST['user_name'] : ""; // сохраняем то, что вводили?>" /><br/>

        <label>Ваш e-mail:</label><br/>
        <input type="text" name="user_email" value="<?=($_POST['user_email']) ? $_POST['user_email'] : ""; // сохраняем то, что вводили?>" /><br/>

        <label>Текст сообщения:</label><br/>
        <textarea name="text_comment"><?=($_POST['text_comment']) ? $_POST['text_comment'] : ""; // сохраняем то, что вводили?></textarea>

        <br/>
        <input type="submit" value="Отправить" name="btn_submit" />
    </form>

</body> 
</html>

Несколько основных причин, почему письмо не отправляется:

  • Письмо не содержит дополнительного заголовка From. Он устанавливается с помощью необязательного параметра additional_headers. Также он может быть выключен по умолчанию в конфигурационном файле php.ini. Если заголовок отсутствует в коде, то интерпретатор выдаст следующее сообщение:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing
  • Используйте только LF (\n). Некоторые агенты на основе Unix автоматические заменяют LF на CRLF (\r\n);
  • При реализации функции mail() на Windows адрес получателя не должен быть такого вида: Something someone@example.com.

Может произойти неправильная интерпретация параметра при передаче его почтовому агенту для отправки.

  • Сбои в отправке писем могут возникнуть при размещении вызова mail() в теле цикла. Функция открывает и закрывает соединение с SMTP-сервером после отправки каждого письма.

Обзор стандартных функций php

В стандартный набор php входит большой комплект функций для работы со строками. Подробно рассмотрим несколько из них:

  • 1) substr() – возвращает часть строки. Синтаксис: string substr(string string, int start[, int length]), где:
  • string string – заданная строка.
  • int start – задает начало подстроки.
  • int length – количество символов в возвращаемой подстроке.

Пример:

$string = substr("Hello, world!", 6);
   echo ($string);
  • 2) strpos() – возвращает позицию подстроки в заданной строке. С помощью необязательного параметра можно задать точку отсчета для поиска. Синтаксис: string strpos(string haystack, string needle[, int offset])

Пример:

$string = strpos("Hello, world!", "world");
   echo($string);

3) strstr() – возвращает подстроку из строки, начиная с указанного символа. Синтаксис: string
strstr(string haystack, string needle)

Пример:

$url = "http://www.mail.ru";
   $www = strstr($url,"m");
   echo ($www);
Это лишь малая часть строковых функций, входящих в состав php. С остальными более подробно можно ознакомиться в документации по языку.

ознакомиться в документации по языку

Функции работы с массивами:

1. count() – возвращает количество элементов в массиве. Синтаксис: int count(mixed var)

Пример:

$a=array("Volvo","Kia","Ford");
echo count($a);

2. reset() – устанавливает указатель массива на первый элемент, возвращает его значение.
Синтаксис: reset(array array)
Пример:

$b=array("1","2","3");
echo reset($b)."</br>";

3. sort() – сортирует массив по возрастанию. Функция воспринимает любой массив как список. Синтаксис: void sort(array array [, int sort_flags])

Пример:

$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
    echo "fruits[" . $key . "] = " . $val . "\n";
}
Функции работы с массивами

В языке PHP существует много функций для работы с датой и временем. Но функция date () в php является основной. Она возвращает строку, отформатированную согласно установленному шаблону format. Временная метка устанавливается аргументом timestamp. Ее синтаксис: string date ( string $format [, int $timestamp = time() ] )

Пример:

echo date('l jS \of F Y h:i:s A');

Более подробно обо всех принимаемых значениях аргументов функции можно узнать из документации к php.

функции можно узнать из документации

Несколько стандартных математических функций:

1. bindec() – преобразует число двоичной системы исчисления в десятичное. Синтаксис: bindec ( string $binary_string )

Пример:

echo bindec('11001') . "<br/>";

2. floor() – округляет число до меньшего. Синтаксис: float floor (float $value )

Пример:

echo floor(4.3). "<br/>";

3. rand() –генерирует случайное число из указанного диапазона. Синтаксис: int rand ( int $min , int $max )

Пример:

echo rand(5, 1500);
Одна ложка меда из бочки

Одна ложка меда из бочки

Описанные функции php всего лишь ложка меда из огромной бочки волшебства этого языка. Самые вкусные функции распробуйте самостоятельно.

05 ноября 2014 в 20:47
Материалы по теме
{"url":"http://www.fastvps.ru/", "src":"/images/advbanners/fastvps.png", "alt":"Хостинг Fastvps.ru. Наш выбор!"}
Заработок