批改状态:合格
老师批语:
类是一个具有相同属性和方法的集合,类成员属性就类似于普通的php变量,类成员方法类似于普通的php函数。
如:NBA球员都是一类,有姓名、身高、球队、球号、体重等属性,还会跑步、投篮等方法,可以把这些属性跟方法放到一个集合,如:
<?php
//定义一个Player类
class Player{
//定义类的属性
public $name;
public $height;
public $team;
protected $playNum = 23;
private $weight;
//定义类的方法 方法这里public标识不是必须的 但是一般还是建议加上,不加默认是public标识
public function jog()
{
//$this 特殊对象引用 永远代表本对象 总与当前对象做一个绑定 属于墙头草 谁调用他往谁那里倒
return "$this->name is jogging,whose playNum is $this->playNum";
}
public function shoot()
{
return "$this->name is shooting";
}
}
?>以上内容中,public代表可公开访问,protected 表示本类跟其子类可访问,private 表示只有本类可以访问,子类跟其他都无法访问。
对象是类实例化的产物,定义好一个类以后,就可以使用new关键字实例化一个类,然后可以赋给一个变量即对象引用。所谓封装性就是使用者不必要了解内部细节及实现原理,将类封装起来,隐藏属性或方法(隐藏实现的细节)使其不对外可见,使用者直接使用就可以,目的是为了控制在程序中属性的读写(读取或者修改)的访问级别,使用者只需要通过外部接口以特定的权限来使用类成员
//实例化一个对象,赋值给$j这个变量,这里就是Player这个类已经做好了封装,$j直接去使用 $j = new Player; //使用->访问符号访问对象里的属性或者方法,也可以后面加=给其进行赋值,还需要注意访问的时候去掉$符号 $j->name = "Jordan"; //方法同理 $j->jog();
构造函数(构造器)是一个魔术方法__construct(),除可以给public标识的属性初始化赋值外,还可以给protected、private标识的属性赋值,如最开始的文件中这些内容可以用构造器处理:
//声明一个构造器并将所有的属性加进去 初始化类成员 让类的状态稳定下来
public function __construct($name,$height,$team,$playNum,$weight){
$this->name = $name;
$this->height = $height;
$this->team = $team;
$this->playNum = $playNum;
$this->weight = $weight;
}然后可以将shoot()方法进行改进,调用$weight:
public function shoot()
{
//尝试将weight属性加进去
return "$this->name is shooting,weighing $this->weight<br>";
}重新实例化对象,并进行调用,这里还需要注意,使用__construct()以后,__construct()中有几个参数,调用这个类的时候就需要往里面传几个参数:
//重新将类进行实例化,并将参数按__construct()的要求传入
$jordan = new Player('Jordan','203cm','Bulk',23,'80kg');
//输出访问上面的shoot方法返回的内容
echo $jordan->shoot();在类没有自动加载的情况下,可以用require语句调用一个类文件
如:
require 'Player.php';
但是如果有多个类需要调用的时候就会很麻烦,这个时候可以用spl_autoload_register()声明一个匿名函数做一个简单的自动加载,下面以类跟需要调用的文件在同一文件夹下为例:
//使用spl_autoload_register()声明一个匿名函数,并将类的名称作为参数传入,这里需要注意,类名称需要跟文件的名称保持一致
spl_autoload_register(function($className){
//调用类名称.php的文件
require $className .'php';
})
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号