程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php 對象作參數傳值

php 對象作參數傳值

編輯:PHP基礎知識
 

例子:

class Student {    
  public $name;    
  public function __construct($value)  {    //構造函數,好處是賦值類的同時也是賦值函數;
    $this->name=$value; 
  }    
}   

class sch {    
  public $s; // #1
  function __construct(Student $s)  {    // #2 ,  #1 2 3 三個意為$s = new Student() ,實例化sch時,也同時包含了一個子對象,即Student的實例.    
     $this->s = $s;    // #3
  }    

$doo = new sch(new Student('20')); // $value賦值20,$name的值也變為20,同時也是為sch實例對象賦值
print_r($doo);
輸出結果:
sch Object ( [s] => Student Object ( [name] => 20 ) )
當然上述的#1,#2,#3也可以改為以下代碼:

  public $snum; 
  function __construct(Student $s)  {         
     $this->snum = $s;  
整個輸出結果:
sch Object ( [snum] => Student Object ( [name] => 20 ) )

如果包含子類,也可通過子類實例化,如下例:

class same {  //父類;
  private $one = 11;
  public function __construct() {
    return $this->one;
  }
}

class Example extends same {  //子類; 繼承父類。
  private $two = 22;
  public function showTwo() {
    return "hello ".$this->two;
  }
}

class showStr {
  public function getStr(same $me) { //參數為父類same;
    echo $me->showTwo();
  }
}
showStr::getStr(new Example); //實例化子類作參

輸出為:hello 22

如果最後一行改為父類作參,showStr::getStr(new same); 則會提示:Fatal error: Call to undefined method same::showTwo() ,即在父類same沒能找到showTwo()方法。這時可以用類比較符instanceof來判斷,以免選錯類。

class showStr {
  public function getStr(same $me) {
    if ($me instanceof Example) {
      echo $me->showTwo();
 } else {
   echo "對不起,選錯類啦!";
 }
  }
}
showStr::getStr(new same);

輸出:對不起,選錯類啦!

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