Inhaltsverzeichnis
Auf welche Probleme sind wir gestoßen? " >Auf welche Probleme sind wir gestoßen?
" >Lass mich dir die Antwort geben
用yield来解决问题" >用yield来解决问题
运行测试代码" >运行测试代码
拉起3个第三方服务" >拉起3个第三方服务
启动购物车服务" >启动购物车服务
发起用户请求" >发起用户请求
运行结果" >运行结果
非阻塞模式" >非阻塞模式
阻塞模式" >阻塞模式
工作原理" >工作原理
和Golang比一比" >和Golang比一比
和NodeJS比划一下" >和NodeJS比划一下
PHP yield 使用注意事项" >PHP yield 使用注意事项
爆改 Workerman" >爆改 Workerman
Die Bedeutung von CoWorkerman" >Die Bedeutung von CoWorkerman
CoWorkerman-Nische" >CoWorkerman-Nische
Okay~ Dies ist das Ende der PHP-Coroutine-Codierung zur Netzwerk-asynchronen Codierung. Wenn Sie nach dem Lesen dieses Artikels viele Zweifel haben, wenden Sie sich bitte an uns Hinterlassen Sie eine Nachricht, um Fragen zu stellen. Wenn " >ZusammenfassungOkay~ Dies ist das Ende der PHP-Coroutine-Codierung zur Netzwerk-asynchronen Codierung. Wenn Sie nach dem Lesen dieses Artikels viele Zweifel haben, wenden Sie sich bitte an uns Hinterlassen Sie eine Nachricht, um Fragen zu stellen. Wenn
Heim Backend-Entwicklung PHP-Tutorial Erfahren Sie mehr über die erweiterte Verwendung von PHP yield

Erfahren Sie mehr über die erweiterte Verwendung von PHP yield

Jun 30, 2020 pm 05:37 PM
php yield

Erfahren Sie mehr über die erweiterte Verwendung von PHP yield

Einleitung

Als ich zum ersten Mal mit PHPs yield in Kontakt kam, hatte ich das Gefühl, was für eine schwarze Technologie ist yield? Baidu :yield——Coroutine, Generator. In vielen Artikeln geht es um Iterator, Generater, verdammt ~, dieses Ding ist eine Ergänzung zu PHP-Iteratoren. Blättern Sie noch ein paar Seiten weiter und da ist es Go 协程. Ich habe aus Neugier auf Go 协程 geklickt und da waren Wörter wie 并发, 线程, 管道通讯 drin, wc, nb, das ist schwarze Technologie, komm zurück und lies PHP noch einmal, ich möchte Transfer Go jede Minute.

Verwandte Lernempfehlungen: PHP-Programmierung vom Anfänger bis zum Experten

Yield-Syntax zu PHP hinzugefügt

Die yield-Syntax wurde in Version 5.5 zu PHP hinzugefügt. Sie wird mit Iteratoren verwendet und ist funktionell mit dem 流程控制-Code identisch, ähnlich wie goto und return.

Das Folgende ist ein kleines Beispiel für die vom Beamten bereitgestellte Ausbeute. Anhand der Ausführungsergebnisse können wir analysieren, dass der Code, wenn er bis yield $i ausgeführt wird, zu return $i und nach , echo "$valuen" goto , richtig! Der Yield von PHP ist eine Syntax, die ein- und ausgehen kann. Im Z-Code, sieben rein und sieben raus, wird das for ($i = 1; $i <= 3; $i++) { sicher ausgesendet. $i

<?phpfunction gen_one_to_three() {
    for ($i = 1; $i <= 7; $i++) {
        //注意变量$i的值在不同的yield之间是保持传递的。
        yield $i;
    }}$generator = gen_one_to_three();foreach ($generator as $value) {
    echo "$value\n";}// output12...67
Nach dem Login kopieren

Beim Schreiben von Code geht es darum, Probleme zu lösen. Werfen wir einen Blick auf die Probleme, auf die sie gestoßen sind: PHP-Beamte müssen Yield allen kurz und prägnant vorstellen. Einige Internetnutzer müssen große Dateioperationen mit begrenzten Ressourcen durchführen. Und unser Vogelbruder. Ich sah mich einer Gruppe von PHPern gegenüber, die mit den aktuellen Yield-Tutorials unzufrieden waren, die sich noch auf dem Basisniveau befanden. Ich nahm einen Taskplaner als Beispiel und erklärte ihnen eine erweiterte Verwendung.

yieldphp.net: Generatorsyntax,

Wie man große Dateien in PHP liest,

Wind and Snow Corner: Verwendung von Coroutinen zur Implementierung der Multitask-Planung in PHP.

vorgeschlagen Frage, verwenden Sie

, um sie zu beantworten. Wenn ich die obige Antwort sehe, denke ich, dass diese PHP-Coroutine nichts weiter ist (

und yield im Vergleich zu ). Go协程Es gibt ein Sprichwort:

Gegenwärtig hat die Mehrheit der Internetnutzer keine besseren und schwierigeren Fragen gestellt, um Gewinn zu erzielen.

一个好问题比答案更重要

Diese In-and-Out-Syntax besteht in vielen Beispielen darin, Yield als Iterator zu verwenden oder wenig Speicher zu verwenden, um sehr großen Text

, yield usw. zu lesen, egal wie fortgeschritten ist es Verwenden Sie es, um einen einfachen Aufgabenplaner zu implementieren, und der Code dieses Planers ist auf den ersten Blick ähnlich. Excelcsv

Genau wie eine gute Frage ist sie wertvoller als die Antwort

Verwenden Sie PHP. Implementieren Sie einen Socket-Server, der Anfragen empfangen und die Zeit des Servers zurückgeben kann.
  1. Okay, das ist die erste Frage, die den Grundstein legt. Offizielle Antwort

Im Originalcode fügen wir eine Anforderung hinzu: Wenn der Socket-Server Anforderungen verarbeitet, ist er von anderen Socket-Servern abhängig und benötigt auch die Client-Funktion. Das heißt, er kann Anfragen empfangen und Anfragen an andere Server initiieren.
  1. Dies ist die zweite Frage und auch die Vorahnung.

Der ursprüngliche Socket-Server kann jeweils nur einen Kunden bedienen. Wir hoffen, einen
    Socket-Server zu implementieren und die
  1. Parallelitätsverarbeitung非阻塞I/O zu unterstützen eingegangene Anfragen und proaktive Anfragen. Es ist nicht erforderlich, Multithreading oder Multiprozess zu verwenden.
  2. Diese Frage ist immer noch eine Vorahnung. Sie können darüber nachdenken. Die Antworten auf die Fragen 2 und 3 sind alle in einem Skript platziert: nio_server.php

Im obigen Code habe ich ein bestimmtes Unternehmen aufgelistet, das heißt, der Benutzer fordert eine zusätzliche Kaufaktion im Warenkorb an. Der Warenkorbdienst muss mit Produktdiensten, Inventardiensten und Vorzugsdiensten interagieren, um dies zu überprüfen Durchführbarkeit der zusätzlichen Kaufaktion. Es gibt synchrone und asynchrone Methoden zum Anfordern und Vergleichen.

Es gibt eine Menge Code, dem man folgen muss, ich habe Gitee-Links eingefügt. Zur Verwendung siehe readme.md

Die letzte Frage: Wenn Sie in PHP Code synchron schreiben, wird das Programm dann asynchron ausgeführt? So passen Sie den Code an.
  1. Tipp: Dies hängt mit der
-Syntax von

zusammen. PHPyieldNoch eine Erinnerung:

Was sind die grammatikalischen Merkmale,

rein und rausyield!Wenn man sich unseren Code ansieht,

synchron, asynchron, rein und raus

Woran hast du gedacht? Wenn Sie den Code im synchronen Verarbeitungsmodus sehen,

checkInventory initiieren Sie eine Anfrage und warten nacheinander auf die zurückgegebenen Ergebnisse fragt der Kunde. checkProduct

异步处理模式下,这三个函数发起请求完毕后,代码就跳出循环了,然后是在select()下的一个代码分支中接收请求, 并收集结果。每次收到结果后判断是否完成,完成则响应客户端。

那么能不能这样:在异步处理的流程中,当 Server收到 自己发起的 client 有数据响应后,代码跳到 nio_server.php 的 247行呢,这样我们的收到请求校验相关的代码就能放到这里,编码能就是同步,容易理解。不然,client 的响应处理放在 280 行以后,不通过抓包,真的很难理解,执行了第 247 行代码后,紧接着是从 280 行开始的。

诶~这里是不是有 进进出出 那种感觉了~ 代码从 247 行出去,开始监听发出 Client 响应,收到返回数据,带着数据再回到 247 行,继续进行逻辑校验,综合结果后,再响应给客户端。

基于 yield 实现的,同步编码,"异步"I/OSocket Server 就实现了。代码。

这里 “异步” 打了引号,大佬别扣这个字眼了。 该是非阻塞I/O

不等大家的答案了,先上我的结果代码吧,代码呢都放在这个目录下了。

gitee https://gitee.com/xupaul/PHP-generator-yield-Demo/tree/master/yield-socket

clone 代码到本地后,需要拉起4个 command 命令程序:

## 启动一个处理耗时2s的库存服务$ php ./other_server.php 8081 inventory 2## 启动一个处理耗时4s的产品服务$ php ./other_server.php 8082 product 4## 监听8083端口,处理一个请求 耗时6s的 promo 服务$ php ./other_server.php 8083 promo 6
Nach dem Login kopieren
## 启动一个非阻塞购物车服务$ php ./async_cart_server.php 

## 或者启动一个一般购物车服务$ php ./cart_server.php
Nach dem Login kopieren
$ php ./user_client.php
Nach dem Login kopieren

运行结果呢如下,通过执行的时间日志,可得这三个请求是并发发起的,不是阻塞通讯。

在看我们的代码,三个函数,发起socket请求,没有设置callback,而是通过yield from 接收了三个socket的返回结果。

也就是达到了,同步编码,异步执行的效果。

client 端日志:

通过以上 起始时间结束时间 ,就看到这三个请求耗时总共就6s,也就按照耗时最长的promo服务的耗时来的。也就是说三个第三方请求都是并发进行的。

cart server 端日志:

而 cart 打印的日志,可以看到三个请求一并发起,并一起等待结果返回。达到非阻塞并发请求的效果。

client 端日志:

以上是阻塞方式请求,可以看到耗时 12s。也就是三个服务加起来的耗时。

cart server 端日志:

cart 服务,依次阻塞方式请求第三方服务,顺序执行完毕后,共耗时12s,当然如果第一个,获第二个服务报错的话,会提前结束这个检查。会节约一点时间。

这里就是用到了 yield 的工作特点——进进出出,在发起非阻塞socket请求后,不是阻塞方式等待socket响应,而是使用yield跳出当前执行生成器,等待有socket响应后,在调用生成器的send方法回到发起socket请求的函数内,在 yield from Async::all() 接收数据响应数据搜集完毕后,返回。

考虑到网速原因,我这就放上一个国内教程链接:Go 并发 教程

php的协程是真协程,而Go是披着协程外衣的轻量化线程(“协程”里,都玩上“锁”了,这就是线程)。

我个人偏爱,协程的,觉得线程的调度有一定随机性,因此需要锁机制来保证程序的正确,带来了额外开销。协程的调度(换入换出)交给了用户,保证了一段代码执行连续性(当然进程级上,还是会有换入换出的,除非是跨进程的资源访问,或者跨机器的资源访问,这时,就要用到分布式锁了,这里不展开讨论),同步编码,异步执行,只需要考虑那个哪个方法会有IO交互会协程跳出即可。

Javascript 和 PHP 两个脚本语言有很多相似的地方,弱类型,动态对象,单线程,在Web领域生态丰富。不同的是,Javascript在浏览器端一开始就是异步的(如果js发起网络请求只能同步进行,那么你的网页渲染线程会卡住),例如AjaxsetTimeoutsetInterval,这些都是异步+回调的方式工作。

基于V8引擎而诞生的NodeJS,天生就是异步的,在提供高性能网络服务有很大的优势,不过它的IO编码范式么。。。刚开始是 回调——毁掉地狱,后来有了Promise——屏幕竖起来看,以及Generator——遇事不绝yield一下吧,到现在的Async/Await——语法糖?真香!

可以说JS的委员非常勤快,在异步编程范式的标准制定也做的很好(以前我尝试写NodeJS时,几个回调就直接把我劝退了),2009年诞生的NodeJS有点后来居上的意思。目前PHP只是赶上了协程,期待PHP的Async/Await语法糖的实现吧。

一旦使用上 yield 后,就必须注意调用函数是,会得到函数结果,还是 生成器对象。PHP 不会自动帮你区别,需要你手动代码判断结果类型—— if ($re instanceof \Generator) {}, 如果你得到的是 生成器,但不希望去手动调用 current() 去执行它,那么在生成器前 使用 yield from 交给上游(框架)来解决。

博客写到这,就开始手痒痒了,看到Workerman框架,我在基础上二开,使其能——同步编码,异步执行

代码已放到:PaulXu-cn/CoWorkerman.git

目前还是dev阶段,大家喜欢可以先 体验一波。

12c1af37a139d3b7036c44bb45678b5a

先上图:

Der obere Teil des Bildes ist das Arbeitswegdiagramm von Workerman und der untere Teil des Bildes ist das Arbeitswegdiagramm von CoWorkerman. Wenn

innerhalb von

workermanworker进程 auf eine Blockierungsfunktion stößt, wartet es auf die Rückkehr von E/A. Wenn zu diesem Zeitpunkt eine neue Anfrage vorliegt, konkurriert der inaktive Worker um diese neue Verbindung.

Ich habe oben eine AsyncTCPConnection Nutzungssituation im Worker5 beschrieben. Eine nicht blockierende Anfrage wurde innerhalb des Workers initiiert und eine Rückruffunktion registriert, und dann lief das Programm bis zum Ende weiter. Wenn eine asynchrone Anfrage antwortet, müssen Sie auf andere Weise reagieren (z. B. indem Sie selbst eine weitere Anfrage initiieren, um den Anforderer zu informieren).

Im Bild unten CoWorkerman konkurrieren auch mehrere Worker um neue Anfragen. Wenn Worker1 eine neue Anfrage erhält, wird ein Generator generiert, im Generator wird eine asynchrone Anfrage initiiert und eine Antwort gesendet Der Rückruf wird registriert. Kehren Sie nach der Antwort zu der Stelle zurück, an der der Generator herausgesprungen ist (yield) und fahren Sie mit der Ausführung des Codes fort.

Initiieren Sie eine asynchrone Anfrage und registrieren Sie eine Rückruffunktion. Diese Standardaufgaben wurden im CoWorkerman-Framework ausgeführt. Die Arbeit innerhalb der Rückruffunktion besteht darin, die Daten zu empfangen und an den Generator zu senden hat die Anfrage initiiert.

In diesem Beispiel werden mehrere Anfragen durch den Aufruf von Promise:all() initiiert und die Ergebnisse zurückgegeben. Warten Sie, bis alle Antworten zurückgegeben wurden, bevor Sie den Generator weiter ausführen

Nachdem das Programm yield beendet wurde, befindet sich der Worker im Ereignisschleifenstatus ($event->loop()), d. h. Mehrkanalüberwachung: Anforderungsport, Anforderungsantwort-Port eines Drittanbieter-Clients. Wenn zu diesem Zeitpunkt:

  1. eine neue Anfrage hat, konkurriert es mit anderen worker um neue Anfragen. Wenn Konkurrenz auftritt, wird im Worker ein neuer Generator generiert.
  2. Wenn der Client antwortet, rufen Sie die Rückruffunktion auf.
  3. Wenn der Client antwortet, führen Sie das Generatorprogramm weiter aus.

Ausgehend von 1 können wir davon ausgehen, dass, wenn es nur einen Worker gibt, dieser Worker weiterhin die nächste Anfrage annehmen und verarbeiten kann, wenn die vorherige Anfrage nicht abgeschlossen ist. Das heißt, CoWorkerman kann unter einem einzigen Worker ausgeführt werden und mehrere Anfragen gleichzeitig bearbeiten.

Natürlich gibt es hier eine Voraussetzung: Blockierungsfunktionen können nicht im Einzelmodus ausgeführt werden. Sobald sie blockiert sind, werden nachfolgende Anforderungen auf der Netzwerkkarte blockiert. Wenn Sie also eine Bibliothek eines Drittanbieters verwenden, empfehle ich Ihnen dennoch, Worker im Multi-Worker-Modus auszuführen. Beim Blockieren gibt es andere CoWorkermans, die neu gehalten werden müssen Anfragen. Worker

    Verwenden Sie synchronen Code, um asynchrone Anforderungen zu initiieren. Wechseln Sie von IO Serial Waiting in parallel, um furchtlose Wartezeiten zu verkürzen. Verbessern Sie die Effizienz von Geschäftsprogrammen, ohne die Lesbarkeit des Codes zu beeinträchtigen.
  1. Verarbeiten Sie mehrere Anfragen so weit wie möglich über die Ereignisschleife in einem Thread, was den häufigen Threadwechsel, der durch eine Anfrage und einen Thread verursacht wird, verringert und die Betriebseffizienz vom Kern aus verbessert.
eignet sich für Anwendungen, die reine

Anfragen verarbeiten, wie z.B. Socket, oder Workerman Gatewaydie mehrere Dienste integrieren大前端Das Ergebnis wird nach der Synthese an ein Szenario wie RPC zurückgegeben.前三页

Die Protokollierung ist die grundlegendste Anforderung jedes Programms. Da die Dateischreibfunktion blockiert, wird die Verwendung von Nachrichten empfohlen Warteschlange oder Redis-Warteschlange. Oder überspringen Sie

und werfen Sie LogstashElasticsearch

CoWorkerman hat seine Grenzen und seine eigene Position.

sich nicht gut an die Grammatik erinnert, können Sie die vorherigen Artikel dieser Serie lesen, um sie zu überprüfen.

yieldWenn ja, machen Sie es bitte dreimal.

Vielen Dank!

CoWorkerman

Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über die erweiterte Verwendung von PHP yield. 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)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate 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)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

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.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

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

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles