0011-PHP8 类进阶

PHP-教程   2023-04-18 17:25   665   0  

类进阶

1、静态成员

  • static 关键词定义静态成员

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(){
   // 在类中使用伪变量: "$this" 引用当前类的成员变量
   return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
 }
 public function fun4(){
   // 在类中使用伪变量: "$this" 引用当前类的成员方法
   return $this->fun3();
 }
 public static function fun5(){
   // 在类中使用伪变量: "$this" 引用当前类的成员变量
   return '姓名:'.Teacher::$name.',学校:'.Teacher::$school.'<hr/>';
 }
 // 析构方法
 public function __destruct(){
   echo '类执行完毕,要关闭了';
 }
}
echo Teacher::$gongfu;
Teacher::$name = '小明';
Teacher::$school = 'PHP教程';
echo Teacher::fun5();

2、抽象类

  • abstract 关键词定义抽象方法/抽象类

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

3、接口

  • 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();

4、接口常量

  • const 创建常量

interface file{
 const HOST = "localhost";
 const DB = "php";
 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();

5、常量

# 创建常量
define('HOST','127.0.0.1');
echo HOST;

echo '<hr/>';

# 创建常量
const NAME = 'PHP中文网';
echo NAME;

6、关键词

关键词类外声明声明类声明属性声明方法解释
const

定义类常量
extends


扩展类,用一个类去扩展它的父类
public

公用属性或方法
protected

私有属性或方法
private

受保护的属性或方法
static
静态成员
abstract

抽象类或方法
interface


创建接口
implements


实现接口
final

类不能被继承
parent::



访问父类
$this->



访问本类
self::



访问本类静态
namespace


创建命名空间
  • final 类不能被继承

final class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
 $this->name = $name;
 $this->school = $school;
}
public function fun3(){
 // 在类中使用伪变量: "$this" 引用当前类的成员变量
 return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{

}
// 实例化
$obj = new PHPTeacher('小明','PHP教程');
echo $obj->fun3();
  • parent:: 访问父类

class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
 $this->name = $name;
 $this->school = $school;
}
public function fun3(){
 // 在类中使用伪变量: "$this" 引用当前类的成员变量
 return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
public function fun3(){
 return parent::fun3();
}
}
// 实例化
$obj = new PHPTeacher('小明','PHP教程');
echo $obj->fun3();
  • self:: 访问本类静态

class Teacher{
public static $name;
public static $school;
public static $gongfu = 'PHP';
public static function fun5(){
 // 在类中使用伪变量: "$this" 引用当前类的成员变量
 return '姓名:'.self::$name.',学校:'.self::$school.'<hr/>';
}
}
echo Teacher::$gongfu;
Teacher::$name = '小明';
Teacher::$school = 'PHP教程';
echo Teacher::fun5();



博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。