程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 沈逸老師PHP魔鬼特訓筆記(5),沈逸魔鬼

沈逸老師PHP魔鬼特訓筆記(5),沈逸魔鬼

編輯:關於PHP編程

沈逸老師PHP魔鬼特訓筆記(5),沈逸魔鬼


  接上一節課,我們專門新建了一個godconfig類,設置了兩個屬性prj_name(項目名),prj_author(作者),然後我們獲取標准輸入(stdin)把結果保存在了類裡面。

  好吧,這節課的名字比較奇葩-我得了”懶癌”,假如我們忘記寫godconfig類的屬性,我們的程序還會運行嗎?答案是依舊可以,PHP會自動給你的類增加屬性(這是老師PPT原話)。
GOON,繼續懶下去,現在godconfig類都不想創建了。這裡我們用到$gc = new stdClass();

  前面這個點很簡單,我就不貼代碼和運行結果了。

  下面,我們有又一個實戰需求:我們在函數文件裡寫一個方法,functionTC() //temp class的意思(這名字都是老師隨意的)。代表返回一個臨時類。

  第一種寫法:

<?php

require('godconfig.php');                    //引入gonconfig這個文件
class godinit                                //創建一個類,godinit
{
    static  $v="god version is 1.2";         //聲明一個靜態屬性$VERSION

    static function init()                   //靜態方法 init
    {
        //$gc = new godconfig();             //實例化godconfig裡定義的類
        //$gc = new stdClass();
        echo "input your project name?".PHP_EOL;
        //$gc -> prj_name = fgets(STDIN);            //從標准輸入中獲取用戶輸入的字符並賦值給實例化屬性$prj_name
        $prj_name = fgets(STDIN);           //重新獲取用戶輸入,並賦值給$prj_name
        
        echo "input your author name?".PHP_EOL;
        //$gc -> prj_author=fgets(STDIN);
        $prj_author = fgets(STDIN);         //重新獲取用戶輸入,並賦值給$prj_author

        echo json_encode(TC(array('prj_name'=>$prj_name,'prj_author'=>$prj_author)));
    }
    static function __callStatic($p1,$p2){
        echo "error function";
    }
}
?>

 

  同時,我們在god_func7這個文件中,寫一個TC方法:

<?php
//functions for PHP7
function genConfig($cnt):string
{
    return file_put_contents(getcwd().'/god.json',$cnt).' of bytes is written.'.PHP_EOL.'god config is created';
}
function TC($p){
    $get_class = new stdClass();
    foreach ($p as $k => $v){
        $get_class -> $k=$v;
    }
    return $get_class;
}

  然後我們看下結果,還是和原來的寫法得到的結果一毛一樣:

  

  OK,現在可以實現godconfig都不用建了。

  還有第二種寫法:我懶球得記了。好吧,這才是真正的懶。

 

   第三種寫法,和PHP7匿名類有關。

  PHP中的構造函數是__construct(參數) {} ,類在實例化的時候首先會執行這個函數。接下來我們來看PHP7 的匿名類(其實沒啥神秘,所謂匿名就是沒名字而已).只不過區別在於,如果匿名類要使用外部變量,需要傳進去,否則無法使用。 

<?php
//functions for PHP7
function genConfig($cnt):string
{
    return file_put_contents(getcwd().'/god.json',$cnt).' of bytes is written.'.PHP_EOL.'god config is created';
}
function TC($p){
     return new class($p){          //this is 匿名類
         function __construct($p){
             foreach ($p as $k => $v){
                 $this -> $k = $v;
             }
         }
     };
}

  其實上面這個一點都不懶,寫這麼多代碼^_^;

  還是看看結果吧:

  

 

版權聲明:筆記整理者亡命小卒熱愛自由,崇尚分享。但是本筆記源自www.jtthink.com(程序員在囧途)沈逸老師的《 PHP魔鬼訓練課第一階段》。本學習筆記小卒於博客園首發, 如需轉載請尊重老師勞動,保留沈逸老師署名以及課程來源地址。

惡補知識點:

1、stdClass:PHP內置頂層類,實際上是一個基類,空白的。啥都沒有。如果你臨時用用的,其他地方很少用。那麼根本不需要新建什麼實體類。直接new 一個stdClass就可以了。
2、foreach遍歷數組

3、匿名類:  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved