PHP
类进阶
一、静态成员
class Teacher{
public static $name;
public static $school;
public static $gongfu = 'PHP';
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
protected function fun1(){
echo '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
private function fun2(){
return '姓名:灭绝师太,学校:PHP中文网<hr/>';
}
public function fun3(){
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
return $this->fun3();
}
public static function fun5(){
return '姓名:'.Teacher::$name.',学校:'.Teacher::$school.'<hr/>';
}
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
echo Teacher::$gongfu;
Teacher::$name = '西门大官人';
Teacher::$school = 'PHP中文网';
echo Teacher::fun5();
二、抽象类
abstract class Teacher{
protected $name;
private $school;
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun3(){
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
abstract public function fun4();
}
class PHPTeacher extends Teacher{
public function fun5(){
return $this->fun3();
}
public function fun4(){
return '我是继承后重写的方法';
}
}
$obj2 = new PHPTeacher('西门大官人','PHP中文网');
echo $obj2->fun4();
echo $obj2->fun5();
三、接口
interface
关键词创建接口。要求类必须实现的方法,但不需要定义方法的具体实现过程implements
关键词使用接口
interface file{
public function noTF($param);
public function noZY($param);
}
class Teacher implements file{
protected $name;
private $school;
public $noTF;
public $noZY;
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function noTF($param){
$this->noTF = $param;
}
public function noZY($param){
$this->noZY = $param;
}
public function fun1(){
return '我是'.$this->name.','.$this->noTF.$this->noZY;
}
}
$obj = new Teacher('欧阳','PHP中文网');
$obj->noTF('我没有体罚学生,');
$obj->noZY('我没有布置作业。');
echo $obj->fun1();
四、接口常量
interface file{
const HOST = "localhost";
const DB = "wqzbxh";
const USER = "root";
const PASSWORF = "root";
public function noTF($param);
public function noZY($param);
}
class Teacher implements file{
private $host = file::HOST;
private $db = file::DB;
private $user = file::USER;
private $password = file::PASSWORF;
protected $name;
private $school;
public $noTF;
public $noZY;
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function noTF($param){
$this->noTF = $param;
}
public function noZY($param){
$this->noZY = $param;
}
public function fun1(){
return '我是'.$this->name.','.$this->noTF.$this->noZY;
}
public function fun2(){
return $this->host . '<hr/>' . $this->db . '<hr/>' . $this->user . '<hr/>' . $this->password;
}
}
$obj = new Teacher('欧阳','PHP中文网');
echo $obj->fun2();
五、常量
define('HOST','127.0.0.1');
echo HOST;
echo '<hr/>';
const NAME = 'PHP中文网';
echo NAME;
六、关键词
关键词 | 类外声明 | 声明类 | 声明属性 | 声明方法 | 解释 |
---|
const | √ | | √ | | 定义类常量 |
extends | | √ | | | 扩展类,用一个类去扩展它的父类 |
public | | | √ | √ | 公用属性或方法 |
protected | | | √ | √ | 私有属性或方法 |
private | | | √ | √ | 受保护的属性或方法 |
static | | √ | √ | √ | 静态成员 |
abstract | | √ | √ | | 抽象类或方法 |
interface | | √ | | | 创建接口 |
implements | | √ | | | 实现接口 |
final | | √ | | √ | 类不能被继承 |
parent:: | | | | | 访问父类 |
$this-> | | | | | 访问本类 |
self:: | | | | | 访问本类静态 |
namespace | √ | | | | 创建命名空间 |
final class Teacher{
public $name;
public $school;
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun3(){
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
}
class PHPTeacher extends Teacher{
}
$obj = new PHPTeacher('西门大官人','PHP中文网');
echo $obj->fun3();
class Teacher{
public $name;
public $school;
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun3(){
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
}
class PHPTeacher extends Teacher{
public function fun3(){
return parent::fun3();
}
}
$obj = new PHPTeacher('西门大官人','PHP中文网');
echo $obj->fun3();
class Teacher{
public static $name;
public static $school;
public static $gongfu = 'PHP';
public static function fun5(){
return '姓名:'.self::$name.',学校:'.self::$school.'<hr/>';
}
}
echo Teacher::$gongfu;
Teacher::$name = '西门大官人';
Teacher::$school = 'PHP中文网';
echo Teacher::fun5();