iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
1

本系列文的環境狀態,可點擊此連結後花園環境參考

這篇是為了撫慰自己金魚般的腦袋,臨時加開的文章。
寫一寫,發現內容似乎有些太多了,於是決定拆成上下集。
上集主要介紹這幾位的功能作用。
下集則會提供完整的範例原始碼,再請看倌自行看狀況服用。

我不知道->、=>、:: 這玩意, 有多少人不懂,至少我跟他相處沒很長,所以也不是很熟啦!但以後我想會很熟啦!畢竟日久生情嘛!

那怎說我們也是後花園嘛,今天就可以來種種花跟樹了。

首先來聊聊 -> 跟 :: 這兩個跟物件導向有關係呢!
如果你之後要用Laravel,這兩位就還滿陰魂不散的, -> 應該會是讓你看得最飽的一位,所以就由他先登場吧!

第一位 -> 用在類別建立物件後

物件名稱 = new 類別名稱();
物件名稱 -> 屬性 [= 值 ];
物件名稱 -> 方法;


<?php
class Flower {

    public $int_Id;
    public $str_Name;
    public $str_Sex;

    function setData($Id, $Name, $Sex){

        $this -> int_Id = $Id;           // 物件名稱 -> 屬性 = [值] ;
        $this -> str_Name = $Name;       // $this是參照到要使用的object
        $this -> str_Sex = $Sex;
    }

    public function showData(){

        echo "編號:" . $this -> int_Id . "<br>";
        echo "花名:" . $this -> str_Name . "<br>";
        echo "性別:" . $this -> str_Sex . "<br>";
    }

}

$flowOb1 = new Flower;
$flowOb1  -> setData(1, "Ren", "男");       //  物件名稱 -> 方法(值)
$flowOb1  -> showData();                    //  物件名稱 -> 方法

$flowOb2 = new Flower;
$flowOb2 -> setData(2, "Rose", "女");
$flowOb2 -> showData();


// $flowOb1 跟 $flowOb2 一直參照著 $this 的走向做事,看倌們可以試著去對照看看
?>

第二位 :: 可以用在靜態成員及靜態方法、類別常數

同類別中可用「self::常數名稱」
類別名稱::常數名稱
類別名稱::function 靜態方法名稱()
類別名稱::$靜態成員的值

<?php
class Flower {

    const title = "類別常數_花名資料";       
    //  類別常數,const 常數名稱 = 值 ;

    static public $countNum = 0;


    public function showData(){
        echo "*****" . self::title . "結束*****<br>";     
        //  在同類別中可使用「self::常數名稱」
    }

    static function showMsg($msg){
        return $msg;
    }

    function __construct(){         //  建構
        Flower::$countNum++;       //  物件建立時,即靜態成員,++加1
    }

    function __destruct(){          //  解構
        Flower::$countNum--;       //  物件刪除時,即靜態成員,--減1
    }

}

echo "*****" . Flower::title . "開始*****<br>";          
//  類別名稱::常數名稱

echo Flower::showMsg("*****msg開頭***** <br>");    
//  類別名稱::function 靜態方法名稱()

$flowOb1 = new Flower;
$flowOb1  -> showData();             

$flowOb2 = new Flower;
$flowOb2 -> showData();

echo Flower::showMsg("*****msg末行*****<br>");     
//  類別名稱::function 靜態方法名稱()

echo "目前的花種物件有" . Flower::$countNum . "個。";      
//  類別名稱::$靜態成員的值
?>

第三位 => 用在陣列

使用 array() 新建數組
可接受任意數量用(,)逗號區隔 「 鍵(key) => 值(value)」。

array(  
key =>  value,
key =>  value,
......
     )

鍵(key):可以是一個整數(integer)或字串(string)。
值(value):可以是任意類型的值。

<?php
$treearray = array(
    "tree0" => "松樹",
    "tree1" => "櫻花樹",
    "tree2" => "紅檜",
);

// 自 PHP 5.4 起
$treearray = [
    "tree0" => "松樹",
    "tree1" => "櫻花樹",
    "tree2" => "紅檜",
];
?>

今天,有了花,有了樹,大家也懂了些 -> 、 :: 、 => ,真是令人開心的一天啊!
如果有看倌還是不太懂,或許明天可以再來光顧下集的較完整的原始碼範例。

若想聽聽不同的介紹,可參考下方連結:
❁ PHP中的符号 ->、=> 和 :: 分别表示什么意思?以及this,self,parent三个关键字的理解!
❁ 給OOP初學者的建議:先搞懂「資料跟行為在一起」就好,其它的慢慢來
❁ PHP中的符号 ->、=> 和 :: 分别表示什么意思?
❁ 范围解析操作符 ::
❁ Array 數組 =>


上一篇
✾後花園D10✾-總要有個攻略路線(網址路由規劃)
下一篇
✾後花園D12✾-我只是想搞懂 -> 、 => 、 :: , 下集
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
陳董 Don
iT邦新手 5 級 ‧ 2019-09-27 12:15:23

期待之後會提到 Scope 的概念~~~

似乎可以來安排看看

我要留言

立即登入留言