博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php面向对象编程
阅读量:6279 次
发布时间:2019-06-22

本文共 2584 字,大约阅读时间需要 8 分钟。

hot3.png

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/>";

104858_fIU3_1178957.png

 

 

再次说明:

$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;

分析图

 

104950_gLgw_1178957.png

u      如果给函数传递的是基本数据类型( 整数、小数、布尔、字符) ,究竟传递的是什么?

结论   : 在默认的情况下是传递的值, 如果你希望传入地址

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

}

php中如果,给一个函数传递的是数组,则默认情况下是传值(拷贝了新的数组),如果希望传入地址,则应当,&$数组名

学生问题?

 
$v){              echo “$k=$v”;}?>

u      成员方法的讲解

函数和成员方法关系:

当我们把一个函数写到 某个类中,则该函数可以称成员方法:

我们有这样一个需求; 希望人可以说话, 做算术题.......,这样就需要使用到成员方法:

①添加speak 成员方法,输出 我是一个好人

   ②添加jisuan 成员方法,可以计算从 1+..+1000的结果

   ③修改jisuan 成员方法,该方法可以接收一个数n,计算 1+..+n 的结果

   ④添加add 成员方法,可以计算两个数的和

 成员方法的基本语法:

访问修饰符号   function 函数名(参数列表){

        //函数体

       //return 语句;

}

 

//如何使用函数

 

       //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();..

 

?>

 

案例:

编写一个函数(以面向对象的方式开发),从网页输入一个整数打印出对应的金子塔:

 当我们学习完成员方法后,我们的类定义就完善一步了:

105419_MEPi_1178957.png

  1.设计计算机类,要求如下:

  属性:品牌,颜色,cpu型号,内存容量,硬盘大小,价格,工作状态

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

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

转载于:https://my.oschina.net/u/1178957/blog/323100

你可能感兴趣的文章
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
开源干货!!!.NET Core + Vue.js(iview-admin) 通用动态权限(RBAC)管理系统框架[DncZeus]开源啦!!!...
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
算法与数据结构1800题 图
查看>>
css面试题
查看>>
Vue组建通信
查看>>