关于PHP的匿名函数和闭包
问题title可能起的有点大,我想请教大家的具体问题是
$value = Session::get('key', 'default_value'); $value = Session::get('key', function () { return 'default_value';});
上面代码的意思就是根据session的key取得相应的值,
当该key相应的值不存在时,返回默认值(default_value)。
请问这两种写法有什么区别,
第一种很自然能理解,
第二种用匿名函数来返回的写法,有什么特定的使用场合吗?
请不吝赐教!
多谢!
回复内容:
问题title可能起的有点大,我想请教大家的具体问题是
$value = Session::get('key', 'default_value'); $value = Session::get('key', function () { return 'default_value';});
上面代码的意思就是根据session的key取得相应的值,
当该key相应的值不存在时,返回默认值(default_value)。
请问这两种写法有什么区别,
第一种很自然能理解,
第二种用匿名函数来返回的写法,有什么特定的使用场合吗?
请不吝赐教!
多谢!
问你一个问题就知道什么场合用匿名函数了:
假如默认值也是事先不知道,需要事后计算出来的呢?
当然你也可以在调用此方法之前先将默认值算好再传入第二参数,不过这样会有这么一个问题,如果key存在,并不需要默认值的情况下,之前算默认值运行的代码不是都浪费了吗?但是匿名函数不会,匿名函数的萌点在于需要调用它的时候才会运行,你只不过是事先定义好它的运行流程而已。
另外你这个题目有点不太准确,你正文里提到的问题其实跟闭包没什么关系哦
session中保存的值可能是字符串、数组、类等各种数据类型,就算是单一数据类型,它表示的意义也存在多种可能,如一本书信息,一个用户信息,一个销量排行等,除此之外,返回一个默认值还有可能要处理一些逻辑、事务等等,在这种情况下,将处理逻辑作为参数传入方法,可以方便的解决这类问题。
class Session { public static function get(String $key, Closure $func) { // 取key的value,如果为空则调用匿名函数 return $func(); // 只专注于自己的业务(k-v),其它业务委托匿名函数处理。 } }
匿名函数是不需要定义函数名的,可以作为参数传递给其他函数, 通常用于回调函数。
对数组操作的时候可能会用到匿名函数比如
usort($array,function($itema,$itemb){ //code.. });

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c
