Im Anschluss an die vorherige Lektion haben wir eine neue Godconfig-Klasse erstellt und zwei Attribute prj_name (Projektname) und prj_author (Autor) festgelegt. Dann haben wir die Standardeingabe (stdin) erhalten und das Ergebnis in der Klasse gespeichert.
Okay, der Name dieser Lektion ist ziemlich seltsam – ich habe „faulen Krebs“. Wenn wir vergessen, die Attribute der Godconfig-Klasse zu schreiben, wird unser Programm dann trotzdem ausgeführt? Die Antwort ist immer noch möglich: PHP fügt Ihrer Klasse automatisch Attribute hinzu (dies sind die Originalwörter der PPT des Lehrers).
GOON, bleib weiterhin faul, jetzt möchte ich die Godconfig-Klasse nicht mehr erstellen. Hier verwenden wir $gc = new stdClass();
Der vorherige Punkt ist sehr einfach, daher werde ich den Code und die Ausführungsergebnisse nicht veröffentlichen.
Als nächstes haben wir eine weitere praktische Anforderung: Wir schreiben eine Methode in die Funktionsdatei, functionTC() //Die Bedeutung der temporären Klasse (dieser Name wird vom Lehrer nach Belieben gewählt). Stellt eine zurückgegebene temporäre Klasse dar.
Die erste Schreibweise:
<?<span style="color: #000000;">php </span><span style="color: #0000ff;">require</span>('godconfig.php'); <span style="color: #008000;">//</span><span style="color: #008000;">引入gonconfig这个文件</span> <span style="color: #0000ff;">class</span> godinit <span style="color: #008000;">//</span><span style="color: #008000;">创建一个类,godinit</span> <span style="color: #000000;">{ </span><span style="color: #0000ff;">static</span> <span style="color: #800080;">$v</span>="god version is 1.2"; <span style="color: #008000;">//</span><span style="color: #008000;">声明一个静态属性$VERSION</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> init() <span style="color: #008000;">//</span><span style="color: #008000;">静态方法 init</span> <span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc = new godconfig(); //实例化godconfig里定义的类 //$gc = new stdClass();</span> <span style="color: #0000ff;">echo</span> "input your project name?".<span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc -> prj_name = fgets(STDIN); //从标准输入中获取用户输入的字符并赋值给实例化属性$prj_name <span style="color: #800080;">$prj_name</span> = <span style="color: #008080;">fgets</span>(STDIN); <span style="color: #008000;">//</span><span style="color: #008000;">重新获取用户输入,并赋值给$prj_name</span> <span style="color: #0000ff;">echo</span> "input your author name?".<span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc -> prj_author=fgets(STDIN);</span> <span style="color: #800080;">$prj_author</span> = <span style="color: #008080;">fgets</span>(STDIN); <span style="color: #008000;">//</span><span style="color: #008000;">重新获取用户输入,并赋值给$prj_author</span> <span style="color: #0000ff;">echo</span> json_encode(TC(<span style="color: #0000ff;">array</span>('prj_name'=><span style="color: #800080;">$prj_name</span>,'prj_author'=><span style="color: #800080;">$prj_author</span><span style="color: #000000;">))); }</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> __callStatic(<span style="color: #800080;">$p1</span>,<span style="color: #800080;">$p2</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">echo</span> "error function"<span style="color: #000000;">; } } </span>?>
Gleichzeitig schreiben wir eine TC-Methode in die Datei god_func7:
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">functions for PHP7</span> <span style="color: #0000ff;">function</span> genConfig(<span style="color: #800080;">$cnt</span>):<span style="color: #0000ff;">string</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #008080;">getcwd</span>().'/god.json',<span style="color: #800080;">$cnt</span>).' of bytes is written.'.<span style="color: #ff00ff;">PHP_EOL</span>.'god config is created'<span style="color: #000000;">; } </span><span style="color: #0000ff;">function</span> TC(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #ff0000;">$get_class = new</span><span style="color: #000000;"><span style="color: #ff0000;"> stdClass();</span> </span><span style="color: #ff0000;">foreach ($p as $k => $v){ $get_class -> $k=$v; } return $get_class<span style="color: #000000;"><span style="color: #ff0000;">;</span> }</span>
Dann werfen wir einen Blick auf das Ergebnis, das genau mit der ursprünglichen Schreibmethode übereinstimmt:
OK, jetzt können Sie godconfig implementieren, ohne es erstellen zu müssen.
Es gibt noch eine zweite Möglichkeit, es zu schreiben: Ich bin zu faul, mich daran zu erinnern. Nun, das ist echte Faulheit.
Die dritte Schreibweise bezieht sich auf anonyme PHP7-Klassen.
Der Konstruktor in PHP ist __construct(parameter) {}. Diese Funktion wird zuerst ausgeführt, wenn die Klasse instanziiert wird. Schauen wir uns als nächstes die anonyme Klasse von PHP7 an (eigentlich gibt es kein Geheimnis, das sogenannte anonyme bedeutet, dass es keinen Namen hat. Der einzige Unterschied besteht darin, dass die anonyme Klasse übergeben werden muss, wenn sie externe Variablen verwenden möchte). andernfalls kann es nicht verwendet werden.
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">functions for PHP7</span> <span style="color: #0000ff;">function</span> genConfig(<span style="color: #800080;">$cnt</span>):<span style="color: #0000ff;">string</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #008080;">getcwd</span>().'/god.json',<span style="color: #800080;">$cnt</span>).' of bytes is written.'.<span style="color: #ff00ff;">PHP_EOL</span>.'god config is created'<span style="color: #000000;">; } </span><span style="color: #0000ff;">function</span> TC(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">class</span>(<span style="color: #800080;">$p</span>){ <span style="color: #008000;">//</span><span style="color: #008000;">this is 匿名类</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$p</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$k</span> => <span style="color: #800080;">$v</span><span style="color: #000000;">){ </span><span style="color: #800080;">$this</span> -> <span style="color: #800080;">$k</span> = <span style="color: #800080;">$v</span><span style="color: #000000;">; } } }; }</span>
Tatsächlich ist das Obige überhaupt nicht faul, so viel Code zu schreiben^_^;
Werfen wir einen Blick auf die Ergebnisse:
Urheberrechtserklärung: Hinweis-Organisator Desperado liebt die Freiheit und befürwortet das Teilen. Aber dieser Hinweis stammt von www.jtthink.com (Programmer on the Road) „The First Stage of PHP Devil Training Course“ von Lehrer Shen Yi. Diese Studiennotiz wurde zuerst im Blog veröffentlicht. Wenn Sie sie erneut drucken müssen, respektieren Sie bitte die Arbeit des Lehrers und behalten Sie die Unterschrift von Lehrer Shen Yi und die Kursquellenadresse.
Schlechte Wissenspunkte:
1. stdClass: In PHP integrierte Klasse der obersten Ebene, die eigentlich eine Basisklasse und leer ist. Nichts. Wenn Sie es vorübergehend verwenden, wird es selten anderswo verwendet. Dann müssen überhaupt keine neuen Entitätsklassen erstellt werden. Erstellen Sie einfach direkt eine neue stdClass.
2. foreach durchläuft das Array
3. Anonymer Kurs: