Переменные, анонимные, закрывающие, обратные вызовы и стрелочные функции в PHP

RedDeveloper
27.02.2023 11:51
Переменные, анонимные, закрывающие, обратные вызовы и стрелочные функции в PHP

Переменные, анонимные, закрывающие и стрелочные функции в PHP

1. Функция переменной

Когда имя переменной предваряется скобками (с параметрами или без), парсер PHP ищет функцию, имя которой совпадает со значением переменной, и вызывает ее.

<?php
  function hello(){
   echo "Hello Nabil hasan";
  }
  $var="Hello";
  $var(); // prints "Hello Nabil hasan"
?>

Или

<?php
function add($x, $y){
   echo $x+$y;
}
$var="add";
$var(10,20); // 30
?>

2. Анонимная функция

Анонимная функция - это функция без какого-либо определенного пользователем имени, поэтому она и называется анонимной. круто на !!! Ее также называют закрывающей или лямбда-функцией. Здесь функция хранится в переменной.

Пример :

$var=function ($arg1, $arg2) { return $val; };

<?php

$multiply = function ($x, $y) {
 return $x * $y;
};
echo $multiply(10, 20); // 200

3. Закрытие

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

<?php
$x = 5;
$say = function ($y) use ($x) {
   $x = $x * $y ;
   echo $x ;
};
$say(7);
?>

4. Функция обратного вызоваАнонимная функция не может получить доступ к переменной из родительской области видимости.

Функция обратного вызова - это функция, которая передается в качестве аргумента в другую функцию. Любая существующая функция может быть использована в качестве функции обратного вызова PHP. Передайте строку с именем функции в качестве аргумента в другую функцию, чтобы использовать ее в качестве функции обратного вызова.

<?php
function my_callback($item) {
  return strlen($item);
}

$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>

// same code differently 

<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>

5. Функция стрелки

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

Синтаксис:

$myFunction = (arg1, arg2, ...argN) => {
    statement(s)
}
or 
$myFunction = (arg1, arg2, ...argN) => expression

Часто fn() используется в php как стрелочная функция.

Fn(arguments) => возвращаемое выражение;

<?php
$y = 1;
$fn1 = fn($x) => $x + $y;
$fn2 = function ($x) use ($y) {
    return $x + $y;
};

echo ($fn1(3));
?>
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

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

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.