接上一堂課,我們專門新建了一個godconfig類,設定了兩個屬性prj_name(項目名稱),prj_author(作者),然後我們取得標準輸入(stdin)把結果保存在了類別裡面。
好吧,這節課的名字比較奇葩-我得了”懶癌”,假如我們忘記寫godconfig類的屬性,我們的程式還會運行嗎?答案是依舊可以,PHP會自動為你的類別增加屬性(這是老師PPT原話)。
GOON,繼續懶得下去,現在godconfig類別都不想創建了。這裡我們用到$gc = new stdClass();
前面這個點很簡單,我就不貼程式碼和運行結果了。
下面,我們有另一個實戰需求:我們在函數檔案裡寫一個方法,functionTC() //temp class的意思(這名字都是老師隨意的)。代表傳回一個臨時類別。
第一種寫法:
<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> <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>?>
同時,我們在god_func7這個檔案中,寫一個TC方法:
<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><span style="color: #000000;"><span style="color: #ff0000;">;</span> }</span>
然後我們看下結果,還是和原來的寫法得到的結果一毛一樣:
OK,現在可以實作godconfig都不用建置了。
還有第二種寫法:我懶球得記了。好吧,這才是真正的懶。
第三種寫法,和PHP7匿名類有關。
PHP中的建構子是__construct(參數) {} ,類別在實例化的時候會先執行這個函式。接下來我們來看PHP7 的匿名類別(其實沒啥神秘,所謂匿名就是沒名字而已).只不過區別在於,如果匿名類別要使用外部變量,需要傳進去,否則無法使用。
<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>
其實上面這個一點都不懶,寫這麼多代碼^_^;
還是看看結果吧:
版權聲明:筆記整理者亡命小卒熱愛自由,崇尚分享。但這篇筆記源自www.jtthink.com(程式設計師在囧途)沈逸老師的《 PHP魔鬼訓練課第一階段》。本學習筆記小卒於博客園首發, 如需轉載請尊重老師勞動,保留沈逸老師署名以及課程來源地址。
惡補知識點:
1、stdClass:PHP內建頂層類,實際上是一個基類,空白的。啥都沒有。如果你臨時用的,其他地方很少用。那麼根本不需要新建什麼實體類別。直接new 一個stdClass就可以了。
2、foreach遍歷數組
3、匿名類:

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中