


php之重载__get __set isset unset __call __callStatic python static method import static import区别 gcc static 链接静态库
php中的overloading跟传统面向对象的重写不同,例如java中:
<code>class A{ public void methodName(参数<span>1</span>); public void methodName(参数<span>1</span>,参数<span>2</span>); public void methodName(参数<span>1</span>,参数<span>2</span>,参数<span>3</span>); <span>...</span>}</code>
php中重载是对类或者对象调用不存在的属性或方法时一种“优雅”的错误处理机制。想不明白为什么PHP这也叫重载,跟传统面向对象编程中的重载可以说是风马牛不相及。
php的重载依靠魔术方法__get() __set() isset() unset() __call() __callStatic()来实现,在我们访问不存在的属性或者方法时候,系统会自动调用这些魔术方法。
代码:
<code><span><span><?php </span> header(<span>"content-type:text/html;charset=utf-8"</span>); <span><span>class</span><span>Sample</span>{</span><span>public</span><span>$p1</span> = <span>1</span>;<span>//类中声明的属性p1</span><span>//保存被重载的数据</span><span>private</span><span>$data</span> = <span>array</span>(); <span>/* 在访问对象不存在的属性时__get被调用 $name:变量名 */</span><span><span>function</span><span>__get</span><span>(<span>$name</span>)</span> {</span><span>"<br>__get:: "</span>.<span>$name</span>; <span>if</span>(array_key_exists(<span>$name</span>, <span>$this</span>->data)){ <span>return</span><span>$this</span>->data[<span>$name</span>]; } <span>$trace</span> = debug_backtrace(); trigger_error( <span>'访问类中不存在的属性'</span>.<span>$name</span>. <span>' 文件:'</span>.<span>$trace</span>[<span>0</span>][<span>'file'</span>]. <span>' 所在行'</span>.<span>$trace</span>[<span>0</span>][<span>'line'</span>] ,E_USER_WARNING); <span>return</span><span>null</span>; } <span>/* 对象不存在的属性赋值时__set被调用 $name:变量名 $value:变量值 */</span><span><span>function</span><span>__set</span><span>(<span>$name</span>,<span>$value</span>)</span>{</span><span>echo</span><span>"<br> __set:: $name = $value "</span>; <span>$this</span>->data[<span>$name</span>] = <span>$value</span>; } <span>/* 对象不存在的属性使用isset()或empty() 时__isset被调用 $name:变量名 $value:变量值 */</span><span><span>function</span><span>__isset</span><span>(<span>$name</span>)</span>{</span><span>echo</span><span>"<br>isset:: $name "</span>; <span>return</span><span>isset</span>(<span>$this</span>->data[<span>$name</span>]); } <span>/* 对象不存在的属性使用unset()时被调用 $name:变量名 $value:变量值 */</span><span><span>function</span><span>__unset</span><span>(<span>$name</span>)</span>{</span><span>echo</span><span>"<br>__unset:: $name"</span>; <span>unset</span>(<span>$this</span>->data[<span>$name</span>]); } <span>/* 类的对象的不存在的实例方法调用的时候,会自动调用本方法,该方法必须是public */</span><span>public</span><span><span>function</span><span>__call</span><span>(<span>$name</span> , <span>$arguments</span>)</span>{</span><span>if</span>(<span>$name</span>===<span>'f1'</span>){ <span>echo</span><span>"<br>"</span>.<span>$name</span>.<span>"方法被调用,"</span>.<span>"参数:"</span>; var_dump(<span>$arguments</span>); }<span>else</span><span>if</span>(<span>$name</span>===<span>'f2'</span>){ <span>echo</span><span>"<br>"</span>.<span>$name</span>.<span>"方法被调用,"</span>.<span>"参数:"</span>; var_dump(<span>$arguments</span>); }<span>else</span>{ trigger_error(<span>"非法调用!"</span>,E_USER_WARNING); } } <span>/* 类的对象的不存在的静态方法调用的时候,会自动调用本方法 5.3.0 新增 __callStatic()魔术方法。可见性未设置为 public 或未声明为 static 的时候会产生一个警告 */</span><span>public</span><span>static</span><span><span>function</span><span>__callStatic</span><span>(<span>$name</span> , <span>$arguments</span>)</span>{</span><span>echo</span><span>"<br>"</span>.<span>$name</span>.<span>"静态方法被调用,"</span>.<span>"参数:"</span>; var_dump(<span>$arguments</span>); } } <span>$s</span> = <span>new</span> Sample(); <span>echo</span><span>"<br>访问类中存在的实例属性:s->p1:: "</span>.<span>$s</span>->p1; <span>//属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为 static。从 PHP 5.3.0 起, 将这些魔术方法定义为 static 会产生一个警告。</span><span>//Fatal error: Access to undeclared static property: Sample::$p3</span><span>//echo "<br>访问类中不存在的静态属性不会调用魔术方法__get:".Sample::$p3;//错误</span><span>//访问类中不存在的属性,类中的魔术方法__get会被调用</span><span>echo</span><span>$s</span>->p2; <span>//给类中不存在的属性赋值,类中的魔术方法__set会被调用</span><span>$s</span>->p2 = <span>88</span>; <span>echo</span><span>'<br>'</span>.<span>$s</span>->p2; <span>//输出 88</span><span>//类中的魔术方法__isset会被调用</span> var_dump(<span>isset</span>(<span>$s</span>->p2)); <span>//类中的魔术方法__isset会被调用</span> var_dump(<span>empty</span>(<span>$s</span>->p2)); <span>//类中的魔术方法__unset会被调用</span><span>unset</span>(<span>$s</span>->p2); <span>echo</span><span>'<br>'</span>.<span>$s</span>->p2; <span>//p2被销毁,报错</span><span>$s</span>->f1(); <span>$s</span>->f1(<span>1</span>,<span>2</span>); <span>$s</span>->f1(<span>1</span>,<span>2</span>,<span>"hello"</span>); <span>$s</span>->f2(<span>true</span>,<span>"111"</span>); <span>$s</span>->f3(); <span>//调用对象不存在的静态方法</span> Sample::say(<span>'hello'</span>); Sample::say(<span>'hello'</span>,<span>'php'</span>); <span>?></span></span></span></code>
以上就介绍了php之重载__get __set isset unset __call __callStatic,包括了static方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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



Die Rolle und Verwendung von Statik in der C-Sprache: 1. Variablenbereich; Wenn das Schlüsselwort static vor einer Variablen steht, ist der Gültigkeitsbereich der Variablen auf die Datei beschränkt, in der sie deklariert ist. Mit anderen Worten, die Variable ist ein „Gültigkeitsbereich auf Dateiebene“, was sehr nützlich ist, um das „ zu verhindern. Problem der doppelten Definition von Variablen; 2. Lebenszyklus, statische Variablen werden einmal initialisiert, wenn die Ausführung des Programms beginnt, und zerstört, wenn das Programm endet usw.

1. static Bitte schauen Sie sich zuerst das folgende Programm an: publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello, world!");//(2)}} Habe das gesehen Segmentprogramme sind den meisten Leuten bekannt, die Java studiert haben. Auch wenn Sie kein Java, aber andere Hochsprachen wie C gelernt haben, sollten Sie die Bedeutung dieses Codes verstehen können. Es gibt lediglich „Hallo Welt“ aus und hat keine andere Verwendung. Es zeigt jedoch den Hauptzweck des statischen Schlüsselworts.

Praktische Anwendungsszenarien und Verwendungsfähigkeiten des Schlüsselworts static in der C-Sprache 1. Übersicht static ist ein Schlüsselwort in der C-Sprache, das zum Ändern von Variablen und Funktionen verwendet wird. Seine Funktion besteht darin, seinen Lebenszyklus und seine Sichtbarkeit während der Programmausführung zu ändern und Variablen und Funktionen statisch zu machen. In diesem Artikel werden die tatsächlichen Anwendungsszenarien und Verwendungstechniken des statischen Schlüsselworts vorgestellt und anhand spezifischer Codebeispiele veranschaulicht. 2. Statische Variablen verlängern den Lebenszyklus von Variablen. Die Verwendung des Schlüsselworts static zum Ändern lokaler Variablen kann deren Lebenszyklus verlängern.

Modifikator abstract (abstract) 1. Abstract kann eine Klasse ändern (1) Die durch abstract geänderte Klasse wird als abstrakte Klasse bezeichnet (2) Syntax: abstractclass-Klassenname {} (3) Funktionen: Abstrakte Klassen können keine Objekte separat erstellen, sie können jedoch (4) Abstrakte Klassen können Mitgliedsvariablen und Mitgliedsmethoden definieren. Wenn sie zum Erstellen von Unterklassenobjekten verwendet werden, erstellt jvm standardmäßig ein übergeordnetes Klassenobjekt apply Wird angewendet, wenn JVM ein übergeordnetes Klassenobjekt erstellt. 2. Abstrakt kann Methoden ändern (1) Die durch asbtract geänderte Methode wird als abstrakte Methode bezeichnet (2) Syntax: Zugriffsmodifikator abstrakter Rückgabewert

Die Funktionen von Static: 1. Methoden; 3. Andere Verwendungen; Optimierung des Speicherlayouts; 11. Vermeiden Sie wiederholte Initialisierung. 12. Verwendung in Funktionen. Detaillierte Einführung: 1. Variablen, statische Variablen. Wenn eine Variable als statisch deklariert wird, gehört sie zur Klassenebene und nicht zur Instanzebene. Dies bedeutet, dass unabhängig von der Anzahl der erstellten Objekte nur eine statische Variable und alle Objekte vorhanden sind Teilen Sie diese statischen Variablen usw.

Das „statische“ in den statischen PHP-Methoden bedeutet, dass diese Eigenschaften und Methoden direkt aufgerufen werden können, ohne die Klasse zu instanziieren. „static“ ist ein Schlüsselwort, das zum Ändern der Eigenschaften und Methoden der Klasse verwendet wird, und seine Verwendungssyntax lautet beispielsweise „class Foo { public static $my_static = 'hello';}".

Springboot liest die Pro-Datei und fügt statische statische Variablen ein mailConfig.properties#Server mail.host=smtp.qq.com#Portnummer mail.port=587#E-Mail-Konto mail.userName=hzy_daybreak_lc@foxmail.com#E-Mail-Autorisierungscode-Mail. passWord =vxbkycyjkceocbdc#Zeitverzögerung mail.timeout=25000#Sender mail.emailForm=hzy_daybreak_lc@foxmail.com#Sender mai

PHP ist eine beliebte serverseitige Open-Source-Skriptsprache, die in der Webentwicklung weit verbreitet ist. Die PHP-Sprache ist nicht nur einfach zu erlernen und zu verwenden, sondern unterstützt auch eine Vielzahl von Programmierparadigmen, objektorientierte Programmierung, funktionale Programmierung usw. In PHP gibt es einige spezielle Syntaxschlüsselwörter wie Static, Final, Abstract usw. Diese Schlüsselwörter haben spezielle Funktionen in der objektorientierten Programmierung. In diesem Artikel werden diese Schlüsselwörter ausführlich vorgestellt. Static-Schlüsselwort In PHP hat das Static-Schlüsselwort zwei Verwendungszwecke
