首页 > 代码库 > php面向对象编程

php面向对象编程

u      成员属性的说明

 

1.      成员属性是从某个事物提取出的,它可以是 基本数据类型(整数、小数、字符、布尔),也可以是复合数据类型(数组、对象)

<?php

       class Cat{

  public $name;

 public $age;

} 

       //创建对象

       $cat1=new Cat;

$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型号,内存容量,硬盘大小,价格,工作状态

  方法: 打开,关闭,休眠 (表示)

  创建一个计算机对象,调用打开,关闭方法.

php面向对象编程