Функция – это участок кода, который можно многократно выполнять в различных местах PHP скрипта когда нам это угодно. Чтобы функцию запустить на выполнение, необходимо её вызвать.
// Декларация функции
function sayHello()
{
echo "<h1>Hello, world!</h1>";
}
// Вызов функции
sayHello();
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
}
// Передаём литерал
sayHello("John"); // Hello, John!
// Передаём значение переменной
$name = "Mike";
sayHello($name); // Hello, Mike!
// Обращение к функции через переменную
$func = "sayHello";
$func("Guest"); // Hello, Guest!
$x = function ($name) {
echo "Hello, $name!".PHP_EOL;
};
$x('Donald'); // Hello, Donald!
// Аргументы по умолчанию
function sayHello($name = "Guest")
{
echo "<h1>Hello, $name!</h1>";
}
sayHello("John"); // Hello, John!
sayHello(); // Hello, Guest!
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
$name = "Вася";
}
sayHello("John");
$name = "Mike";
sayHello($name);
echo$name;//???
// Обращение к глобальным переменным: вариант 1
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
global $name;
$name = "Вася";
}
$name = "Mike";
sayHello($name);
echo$name;//Вася
// Обращение к глобальным переменным: вариант 2
function sayHello($name)
{
echo "<h1>Hello, $name!</h1>";
$GLOBALS["name"]= "Вася";
}
$name = "Mike";
sayHello($name);
echo$name;//Вася
// Обращение к глобальным переменным: вариант 3
function sayHello(&$name)
{
echo "<h1>Hello, $name!</h1>";
$name = "Вася";
}
$name = "Mike";
sayHello($name);
echo$name; // Вася
sayHello("John"); //ERROR!!!
function test(){
$a = 0;
echo $a++;
}
test(); // 0
test(); // 0
test(); // 0
function test(){
static $a = 0;
echo $a++;
}
test(); // 0
test(); // 1
test(); // 2
function square($num) {
return $num * $num;
// Этот код никогда не исполнится
echo "Мертвый код";
}
echo square(4); // 16
$result= square(4);
// Возвращение массива
function numbers() {
return [1, 2, 3];
}
list($one, $two, $three) = numbers();
// Разыменовывание массива (PHP 5.4)
$two= numbers()[1];
foo(1, 2, 3);
function foo() {
$numargs = func_num_args();
echo "Всего аргументов: $numargs\n";
echo "Второй аргумент: " . func_get_arg(1) . "\n";
$args = func_get_args();
foreach ($args as $key => $value) {
echo "Аргумент$key : $value\n";
}
}
// PHP 5.6
function foo(...$nums) {
foreach ($nums as $key => $value) {
echo "Аргумент$key : $value\n";
}
}
// и
function sum($n1, $n2) {
return ($n1 + $n2;
}
sum(...[2, 5]);
function foo(array $var) {
// Ожидается только массив!
}
function mult($num) {
return $num * $num;
}
// PHP 5.4
function bar(callable $var, $arg) {
return $var($arg);
}
bar("mult", 4);
// PHP 7
function foo(int $i, string $s,bool $b,int ...$nums):bool {
return $b;
// Ожидается только массив!
}
// Включение строгой типизации
declare(strict_types=1);