PHP開發入門教程之物件導向

來源:互聯網
上載者:User

PHP是弱變數的指令碼語言,也就是說你無需先定義,這一點很靈活。也可以給予很大的自由度,但對於程式來說,自由並非好事。

  因為給予後期維護人員閱讀帶來很大的麻煩。

  下面來進入我們第一個程式:

  1.php

////////////////////
<?class helloWorld{
 var $hellow_str = "Hello World!";
 function helloWorld(){
  echo $this->hellow_str;
 }
}
$p = new helloWorld;
?>
////////////////////

  很明顯,這是一個類,很簡單的類,只有一個建構函式。目的就是輸出"Hello World";首先我們定義了一個類成員變數,通過一個特殊的$this對象,輸出該變數,oop思想我不是很精,僅僅在於php開發方面用到,其他的也只是借鑒,但是我想對於php開發人員已經足夠了。

  接下來,解釋下什麼是$this對象,從這點我們先要知道什麼是類。

  類,可以解釋為一群相同的群體,在類中的成員變數,如上面的$hellow_str可以看作是這個群體的獨特的特徵,比如,桌子群體是一個
類,桌子都有案頭,桌腳,這些“都有”的東西,就是桌子全體的共有特徵,在程式類裡面我們就可以定義其為 桌子類的一個成員變數。

////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
}
///////////

  同樣,在桌子世界裡,他們也有共同的動作,比如移動[也許你現在就在推桌子^^],也可能我們要把桌子的面子放大點,一樣,這個就是桌子群提的共有方法了,[和特徵近似哦,不過這是動作罷了]。讓我們把這個共同特徵加到類中去吧。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function move(){
  #....
 }
 function largen(){
  #...
 }
}///////////////

  知道了上面的,那麼接下來就很好理解什麼是$this對象了,沒有錯,他就是桌子群中的一個特定的對象,如果閣下還不能理解,那麼,
我們接著解釋。

  如果,我們現在要對一張桌子進行整改,比如,我們想把桌子面積做的更大,那麼,我們針對的就不是一群桌子,而是這個要整改的特定的桌子,這是個個體!所以,我們要把這個類進行“執行個體化”進行精確定位。因為,其他桌子我們不需要整改。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
 }
}
$d = new desktop;#“執行個體化,這個時候我們就是針對一個特定的桌子拉!
$d->largen();#哈哈,把這個特定桌子面放大點。其實$d = $this;明白嗎,$d就是那個特定的桌子,$d->largen就是用那個特定桌子[桌子群大家都有的變大方法]把特定桌子面放大了點。
///////////////

  原來,$this就是指一個特定桌子呀,哈哈,明白了,原來類是大家都有的屬性,方法的集合,而一個特定的對象,就是這個群體中的一個個體,既然是他們當中的個體,當然擁有群體所擁有的共同特徵和方法拉。

  成員變數,成員方法[成員函數],執行個體化,大家都知道了。

  但是我桌子雖然想變大,可是我還不知道桌子開始有多大啊,這可能嗎,怎麼辦呢?

  接下來,我們隆重推出 建構函式 來拉。要說到建構函式啊,話多啊,就不多說了,他就是給我們桌子面和桌子腿確定大小的。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){
  $this->desktop = 100;
  $this->baluster = 100;
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
 }
}
////////////
看到了吧,我把桌子定義了大小和長度哦
//////////

  聰明的你,一定想立即執行個體化了吧,如果我開始在定義成員變數裡就給值了,那不是說所有桌子都一樣大嗎?

//////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){
  $this->desktop = 100;
  $this->baluster = 100;
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
 }
}
$d = new desktop;
$d->desktop();
////////////////////

  可是結果卻是:Call to a member function desktop() on a non-object in

  倒黴,肯定是作者在騙點擊,bs這小樣,TT.

  其實是我錯了,我知道錯了。原來 我們剛才添加的函數

function desktop(){
 $this->desktop = 100;
 $this->baluster = 100;
}

  是個建構函式,什麼是建構函式呢,哎呀,原來建構函式是類特有的函數,在類被執行個體化後,類會第一步自動執行建構函式,它在為類開闢記憶體單元嘛。

  為了驗證是不是它一開始就執行,大家請把目光放到本教程第一個代碼上去,嘎嘎,您看到了把,一個和類名一樣的方法,一個建構函式,在我們執行個體化後就已經輸出代碼了吧,這就證明我還沒有說錯呢。

  好了,回到我們的桌子世界裡,你發現了,我們這個時候所有桌子面和腿都是100了。

  2.php

  執行代碼

//////////////
<?
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){
  $this->desktop = 100;
  $this->baluster = 100;
  echo "我們桌子家族命令大家把桌子面子都給我統一在".$this->desktop."大小!<br />";
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
  echo "7~,小桌子我今天改造了,不鳥你們拉,哈哈, 我現在面子可比你們大,我有".$this->desktop."嘎嘎";
 }
}
$d = new desktop;
$d->largen();
?>

  小桌子,逃離了桌子家族,因為,我們的面子沒小桌子這nb大了。桌子老長老看不下去了,小樣,看我的。

//////////////
<?
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop($desktop){
  $this->desktop = $desktop;
  $this->baluster = 100;
  echo "我們桌子家族命令大家把桌子面子都給我統一在".$this->desktop."大小!<br />";
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
  echo "7~,小桌子我今天改造了,不鳥你們拉,哈哈, 我現在面子可比你們大,我有".$this->desktop."嘎嘎";
 }
}
$d = new desktop;
$d->largen();
?>

  小桌子,左轉轉,右轉轉 看了半天,逛累了,覺得自己現在也進化了,該看看新同類了 於是;桌子變身執行後,發現......

/////
$d = new desktop(101);
////

  我tmd還是一張小桌子。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.