• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

PHP 类进阶

Data: 2018-11-28 21:00:32Form: JournalClick: 9

# PHP 类进阶


# 一、静态成员

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

# 二、抽象类

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

# 三、接口

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

# 四、接口常量

  • const 创建常量
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 类不能被继承
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();
Name:
<提交>