php面向對象編程

u      成員屬性的說明php

 

1.      成員屬性是從某個事物提取出的,它能夠是 基本數據類型(整數、小數、字符、布爾),也能夠是複合數據類型(數組、對象)算法

<?php數組

       class Cat{函數

  public $name;學習

 public $age;ui

} spa

       //建立對象設計

       $cat1=new Cat;code

$cat1=new Cat();對象

?>

2.      怎樣訪問一個成員屬性(其它成員屬性是public)

基本語法是

$對象名->屬性名;

  若是一個文件,專門用於定義類,則命名規範應當這樣

類名.class.php

//定義一我的類

       class Person{

             

              public $name;

              public $age;

       }

 

       $a=new Person();

       $a->name="小明";

       $a->age=20;

       //a變量(對象),賦給$b

       $b=$a;

 

       echo $a->name."<br/>";

       echo $b->name."<br/>";

 

 

再次說明:

$a=78;

       //$b=$a;

       $b=&$a;

       $b=$b+8;

 

       echo $a."||".$b;

 

u      若是給一個函數傳遞一個對象,其實是傳遞的一個地址.

//看下面的一段代碼:

 

       class Person{

             

              public $name;

              public $age;

       }

 

       $p1=new Person();

       $p1->name="韓順平";

       $p1->age=33;

       //函數接收對象時候,到底是傳入值,仍是地址(!!!!)

      

 

       function test1($p){

              $p->name="小明";

       }

       test1($p1);

       echo $p1->name;

分析圖

 

u      若是給函數傳遞的是基本數據類型( 整數、小數、布爾、字符) ,究竟傳遞的是什麼?

結論   : 在默認的狀況下是傳遞的值, 若是你但願傳入地址

function test(&$變量....){

}

php中若是,給一個函數傳遞的是數組,則默認狀況下是傳值(拷貝了新的數組),若是但願傳入地址,則應當,&$數組名

學生問題?

 <?php
         $a1=array(1,3,900);$a2=array(56,90,100);
        $arr=array($a1,$a2);
         foreach($arr as $k=>$v){              echo 「$k=$v」;}
?>

u      成員方法的講解

函數和成員方法關係:

當咱們把一個函數寫到 某個類中,則該函數能夠稱成員方法:

咱們有這樣一個需求; 但願人能夠說話, 作算術題.......,這樣就須要使用到成員方法:

①添加speak 成員方法,輸出 我是一個好人

   ②添加jisuan 成員方法,能夠計算從 1+..+1000的結果

   ③修改jisuan 成員方法,該方法能夠接收一個數n,計算 1+..+n 的結果

   ④添加add 成員方法,能夠計算兩個數的和

 成員方法的基本語法:

訪問修飾符號   function 函數名(參數列表){

        //函數體

       //return 語句;

}

<?php
 
       class Person{
              
              public $name;
              public $age;
 
              public function speak(){
                     echo "我是一個好人!";
              }
 
              public function count1(){
                     
                     $res=0;
                     for($i=1;$i<=1000;$i++){
                            $res+=$i;
                     }
                     //return 究竟到什麼地方去?誰調用,就返回給誰
                     return $res;
              } 
              //修改jisuan 成員方法,該方法能夠接收一個數n,計算 1+..+n 的結果               public function count2($n){
                     $res=0;
                     for($i=0;$i<=$n;$i++){
                            $res+=$i;
                     }
                     return $res;
              }
 
              //添加add 成員方法,能夠計算兩個數的和
              public function add($num1,$num2){
              
                     return $num1+$num2;
              }
              
       }

 

//如何使用函數

 

       //1. 建立一我的

       $p1=new Person();

       //經過對象去訪問,調用成員方法.

       //這裏強調,調用成員方法和調用普通函數的機制,仍然不變

       $p1->speak();

       //讓這我的作算術題

       $res=$p1->count1();

 

       echo '計算結果是='.$res;

       //讓這我的能夠接收一個數,而後計算

 

       echo "計算結果是=".$p1->count2(100);

       echo "計算結果是=".$p1->count2(100);

       echo "計算結果是=".$p1->count2(100);

 

       echo "23+89=".$p1->add(23,89);

?>

 

 

u      成員方法的細節

 

 

咱們在實際開發,其實一般是這樣來使用類

 

 

Person.class.php

 

<?php

 

       class Person{

              //成員屬性

              public $name;

              public $age;

 

              //成員方法

              public function speak(){

                     echo "我是一個好人!";

              }

 

              public function count1(){

                    

                     $res=0;

                     for($i=1;$i<=1000;$i++){

                            $res+=$i;

                     }

                     //return 究竟到什麼地方去?誰調用,就返回給誰

                     return $res;

              }

 

              //修改jisuan 成員方法,該方法能夠接收一個數n,計算 1+..+n 的結果

              public function count2($n){

                     $res=0;

                     for($i=0;$i<=$n;$i++){

                            $res+=$i;

                     }

                     return $res;

              }

 

              //添加add 成員方法,能夠計算兩個數的和

              public function add($num1,$num2){

             

                     return $num1+$num2;

              }

              //添加一個新的方法,能夠判斷三個數最大的數

              public function findMax($arr){

                     //這裏仍然能夠寫算法

 

                     //$arr數組中,找到最大的數.

                     //1.假設數組的第一個數就是最大的數

                     $maxVal=$arr[0];

                     //2.最大數的下標是

                     $maxIndex=0;

                     //開始循環的比較

                     for($i=1;$i<count($arr);$i++){

                            //這個條件說明,maxVal不是最大

                            if($maxVal<$arr[$i]){

                                   //調整

                                   $maxVal=$arr[$i];

                                   $maxIndex=$i;

                            }

                     }

 

                     return $maxVal;

              }

       }

 

      

?>

 

 

Exercise01.php

 

<?php

       //引入類文件

       require_once ‘Person.class.php’;

 

   //建立對象

       $p1=new Person();

       //調用$p1的各個方法

       $p1->speack();

       $p1->count1();..

 

?>

 

案例:

編寫一個函數(以面向對象的方式開發),從網頁輸入一個整數打印出對應的金子塔:

 當咱們學習完成員方法後,咱們的類定義就完善一步了:

  1.設計計算機類,要求以下:

  屬性:品牌,顏色,cpu型號,內存容量,硬盤大小,價格,工做狀態

  方法: 打開,關閉,休眠 (表示)

  建立一個計算機對象,調用打開,關閉方法.

相關文章
相關標籤/搜索