Heim Backend-Entwicklung PHP-Tutorial Von der anonymen Funktion (Abschlussfunktion) zum PHP-Entwurfsmuster-Containermuster

Von der anonymen Funktion (Abschlussfunktion) zum PHP-Entwurfsmuster-Containermuster

Apr 11, 2019 am 11:24 AM
PHP-Designmuster 匿名函数

Anonyme Funktion (Abschlussfunktion)

Anonyme Funktion, auch Abschlussfunktion genannt, ermöglicht die vorübergehende Erstellung einer Funktion ohne angegebenen Namen, der üblicherweise als Wert verwendet wird Der Parameter der Callback-Funktion kann auch als Wert einer Variablen verwendet werden. Informationen zur spezifischen Verwendung finden Sie im folgenden Beispielcode:

/* 示例一:声明一个简单匿名函数,并赋值给一个变量,通过变量名调用这个匿名函数 */
$anonFunc = function($param){    
    echo $param;
}; 
$anonFunc('这里是一个匿名函数');  // 通过变量名调用匿名函数,和普通函数没什么区别

/* 示例二:通过在函数内部使用匿名函数动态创建函数 */
function operate($operator){
    if($operator == '+'){
        return function($a, $b){
            return $a + $b;
        }
    }
    if($operator == '-'){
        return function($a, $b){
            return $a - $b;
        }
    }
}
$add = operate('+');
echo $add(4, 3);    // 7
$sub = operate('-');
echo $sub(4, 3);    // 1
/* 示例三:匿名函数作为回调函数参数传入 */
function callback($callback){
    $callback();
}
function callback(){
    // 闭包测试函数
    echo '这里是闭包测试函数体';
}
Nach dem Login kopieren

In den drei Beispielen des obigen Codes übergibt die anonyme Funktion keine Parameter. Wir wissen, dass anonyme Funktionen häufig in JavaScript verwendet werden und die Parameter in Variablen der übergeordneten Funktion können direkt in Unterfunktionen verwendet werden, die PHP-Sprache erlaubt dies jedoch nicht. Sie müssen das Schlüsselwort use ($var) verwenden (beachten Sie die Verwendung im Code), um den gleichen Zweck zu erreichen. Nehmen Sie die folgenden Änderungen an Beispiel 3 im obigen Code vor:

/* 示例三修改:匿名函数作为参数传入,并且携带参数 */
function callback($callback) use ($content){
    $callback($content);
}
$content = '这里是闭包函数的输出内容';
function callback($content){
    // 闭包函数
    echo $content;
}
Nach dem Login kopieren

In Beispiel 2 im obigen Code kann die anonyme Funktion auch das Schlüsselwort use verwenden, um auf die äußere Variable der übergeordneten Funktion zu verweisen. Die Verwendung anonymer Funktionen und Abschlussfunktionen in diesen Beispielcodes dient lediglich dem Verständnis der Konzepte und hat keine große praktische Bedeutung. Abschlüsse haben viele Verwendungsmöglichkeiten und werden am häufigsten bei der Abhängigkeitsinjektion (DI) des Containermodus in PHP verwendet Rahmen.

Objektorientierter PHP-Containermodus

Wie der Name schon sagt, wird ein Container zum Speichern von Dingen verwendet. Tatsächlich dient er dazu, eine Klasse speziell für den Zugriff auf Objekte zu deklarieren In diesem Fall müssen mindestens zwei Kernmethoden im Container vorhanden sein, um Abhängigkeiten an den Container zu binden und Abhängigkeiten vom Container abzurufen. Ein Container kann als Abhängigkeitsverwaltungstool bezeichnet werden, manchmal auch als Dienstcontainer bezeichnet.

/* 声明一个简单的容器类 */
class Container{
    private $_diList = array();    // 用于存放依赖

    /* 核心方法之一,用于绑定服务
    * @param string $className 类名称
    * @param mixed $concrete 依赖在容器中的存储方式,可以是类名字符串,数组,一个实例化对象,或者是一个匿名函数
    */
    puclic function set($className, $concrete){

            $this->_diList[$className] = $concrete;   
    }

    /* 
    * 核心方法之二,用于获取服务对象 
    * @param string $className 将要获取的依赖的名称
    * @return object 返回一个依赖的实例化对象
    */
    public function get($className){
        if(isset($this->_diList[$className])){
            return $this->diList[$className];
        }    
        return null;
    }
}
Nach dem Login kopieren

Der obige Code ist ein einfaches Containermuster, in dem die Set-Methode zum Registrieren von Abhängigkeiten und die Get-Methode zum Abrufen von Abhängigkeiten verwendet wird. Es gibt viele Möglichkeiten für Container, Abhängigkeiten zu speichern. Der folgende Beispielcode verwendet zur Veranschaulichung anonyme Funktionen.

/* 数据库连接类 */
class Connection{
    public function __construct($dbParams){
        // connect the database...    
    }
    public someDbTask(){
        // code...
    }
}
/* 会话控制类 */
class Session{
    public function openSession(){
        session_start();
    }
    // code...
}
$container->set('session', function(){
    return new Session();
});

$container = new Container();
// 使用容器注册数据库连接服务
$container->set('db', function(){
    return new Connetion(array(  
        "host" => "localhost",  
        "username" => "root",  
        "password" => "root",  
        "dbname" => "dbname"  
    ));
});
// 使用容器注册会话控制服务
$container->set('session', function(){
    return new Session();
});
// 获取之前注册到容器中的服务,并进行业务的处理
$container->get('db')->someDbTask();
$container->get('session')->openSession();
Nach dem Login kopieren

Der obige Code beschreibt die Verwendung des Containers, in dem zwei Dienste, db und session, registriert sind. Hier werden anonyme Funktionen als abhängige Speichermethoden und $container->set() verwendet. Die Methode wird aufgerufen, um den Dienst zu diesem Zeitpunkt zu registrieren. Die anonyme Funktion wird jedoch ausgeführt, wenn die Methode $container->get() aufgerufen wird, und das instanziierte Objekt wird zurückgegeben Instanziierung bei Bedarf und keine Instanziierung, wodurch die Betriebseffizienz des Programms verbessert wird.

Das obige ist der detaillierte Inhalt vonVon der anonymen Funktion (Abschlussfunktion) zum PHP-Entwurfsmuster-Containermuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwendung und Eigenschaften anonymer C++-Funktionen Verwendung und Eigenschaften anonymer C++-Funktionen Apr 19, 2024 am 09:03 AM

Eine anonyme Funktion, auch Lambda-Ausdruck genannt, ist eine Funktion, die keinen Namen angibt und zur einmaligen Verwendung oder zur Übergabe eines Funktionszeigers verwendet wird. Zu den Funktionen gehören: Anonymität, einmalige Verwendung, Schließungen, Rückschluss auf den Rückgabetyp. In der Praxis wird es häufig zum Sortieren oder für andere einmalige Funktionsaufrufe verwendet.

Analyse anonymer Funktionsanwendungsszenarien in Golang-Funktionen Analyse anonymer Funktionsanwendungsszenarien in Golang-Funktionen May 16, 2023 pm 10:51 PM

Als moderne Programmiersprache verfügt Golang (auch bekannt als Go-Sprache) über viele leistungsstarke Funktionen. Unter diesen sind anonyme Funktionen ein sehr wichtiges Konzept in Golang und werden in verschiedenen Szenarien häufig verwendet. In diesem Artikel werden wir die Anwendungsszenarien anonymer Funktionen in Golang-Funktionen eingehend analysieren. Event-Handler Im Event-Handler ist die anonyme Funktion ein sehr praktisches und praktisches Werkzeug. Benutzerdefinierte Logik kann über eine anonyme Funktion an den Ereignishandler übergeben werden, z. B.: funcmain(){bt

Wie kann ich die anonymen Funktionen und Abschlüsse von PHP7 nutzen, um eine flexiblere Codelogikverarbeitung zu erreichen? Wie kann ich die anonymen Funktionen und Abschlüsse von PHP7 nutzen, um eine flexiblere Codelogikverarbeitung zu erreichen? Oct 21, 2023 am 10:21 AM

Wie kann ich die anonymen Funktionen und Abschlüsse von PHP7 nutzen, um eine flexiblere Codelogikverarbeitung zu erreichen? Vor PHP7 verwendeten wir häufig Funktionen, um einen bestimmten Teil der Logik zu kapseln, und riefen diese Funktionen dann im Code auf, um bestimmte Funktionen zu implementieren. Manchmal müssen wir jedoch möglicherweise einige temporäre Logikblöcke im Code definieren. Diese Logikblöcke müssen keine unabhängige Funktion erstellen, und gleichzeitig möchten wir nicht zu viele globale Variablen in den Code einführen. PHP7 führt anonyme Funktionen und Schließungen ein, die dieses Problem sehr gut lösen können. Eine anonyme Funktion ist eine Funktion ohne Namen

Anonyme Funktionen in PHP8.0 Anonyme Funktionen in PHP8.0 May 14, 2023 am 08:31 AM

PHP8.0 ist die neueste Version der Programmiersprache PHP. Ein wichtiges Update sind Verbesserungen und Erweiterungen anonymer Funktionen. Eine anonyme Funktion (auch Abschluss genannt) ist ein besonderer Funktionstyp, der zur Laufzeit dynamisch erstellt und an andere Funktionen übergeben oder in einer Variablen gespeichert werden kann. In PHP sind anonyme Funktionen für fortgeschrittene Programmierung und Webentwicklung von entscheidender Bedeutung. PHP8.0 bietet einige neue Syntax und Funktionen, die anonyme Funktionen flexibler und benutzerfreundlicher machen. Einige der Aktualisierungen sind wie folgt: Typdeklarationen für Funktionsparameter in PHP8.0,

Können anonyme Golang-Funktionen mehrere Werte zurückgeben? Können anonyme Golang-Funktionen mehrere Werte zurückgeben? Apr 13, 2024 pm 04:09 PM

Ja, anonyme Funktionen in der Go-Sprache können mehrere Werte zurückgeben. Syntax: func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//Funktionskörper}. Verwendung: Verwenden Sie den Operator :=, um den Rückgabewert zu erhalten; verwenden Sie das Schlüsselwort return, um mehrere Werte zurückzugeben.

Python-Lambda-Ausdrücke: Das Programmieren einfacher machen Python-Lambda-Ausdrücke: Das Programmieren einfacher machen Feb 19, 2024 pm 09:54 PM

Ein Python-Lambda-Ausdruck ist eine kleine anonyme Funktion, die einen Ausdruck in einer Variablen speichert und seinen Wert zurückgibt. Lambda-Ausdrücke werden oft verwendet, um einfache Aufgaben auszuführen, die durch das Schreiben einer separaten Funktion erledigt werden können, aber Lambda-Ausdrücke können den Code prägnanter und lesbarer machen. Die Syntax eines Lambda-Ausdrucks lautet wie folgt: lambdaarguments: expressionarguments ist die vom Lambda-Ausdruck empfangene Parameterliste, und expression ist der Hauptteil des Lambda-Ausdrucks, der den Code enthält, der ausgeführt werden muss. Der folgende Lambda-Ausdruck addiert beispielsweise zwei Zahlen und gibt deren Summe zurück: lambdax,

Wie kann man die anonymen Funktionen und Abschlüsse von PHP7 nutzen, um eine flexiblere und wiederverwendbarere Codelogik zu erreichen? Wie kann man die anonymen Funktionen und Abschlüsse von PHP7 nutzen, um eine flexiblere und wiederverwendbarere Codelogik zu erreichen? Oct 24, 2023 am 10:30 AM

Wie kann man die anonymen Funktionen und Abschlüsse von PHP7 nutzen, um eine flexiblere und wiederverwendbarere Codelogik zu erreichen? In der Welt der PHP-Programmierung sind anonyme Funktionen und Abschlüsse sehr wertvolle und leistungsstarke Werkzeuge. PHP7 führt einige neue Sprachfunktionen ein, die die Verwendung anonymer Funktionen und Abschlüsse bequemer und flexibler machen. In diesem Artikel wird erläutert, wie Sie mit den anonymen Funktionen und Abschlüssen von PHP7 eine flexiblere und wiederverwendbarere Codelogik erreichen, und es werden einige spezifische Codebeispiele bereitgestellt. 1. Anonyme Funktion Eine anonyme Funktion ist eine Funktion ohne Namen. In PHP können Sie anonym verwenden

Python-Lambda-Ausdrücke: abgekürzt, prägnant, kraftvoll Python-Lambda-Ausdrücke: abgekürzt, prägnant, kraftvoll Feb 19, 2024 pm 08:10 PM

PythonLambda-Ausdrücke sind ein leistungsstarkes und flexibles Tool zum Erstellen prägnanter, lesbarer und benutzerfreundlicher Codes. Sie eignen sich hervorragend zum schnellen Erstellen anonymer Funktionen, die als Argumente an andere Funktionen übergeben oder in Variablen gespeichert werden können. Die grundlegende Syntax eines Lambda-Ausdrucks lautet wie folgt: lambdaarguments:expression Der folgende Lambda-Ausdruck fügt beispielsweise zwei Zahlen hinzu: lambdax,y:x+y Dieser Lambda-Ausdruck kann wie folgt als Argument an eine andere Funktion übergeben werden: defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2)In diesem Beispiel

See all articles