批改状态:未批改
                        老师批语:
                    
                            一、概述
本节课讲述基础知识,类、实例、属性、方法、继承、重载、重写、静态成员几个关键字展开。
二、作业
1、类的声明与实例化
<?php
class Girl{
}
$hdd = new Girl();
$hdd -> name = 'hdd';
$hdd -> xiongwei = '70';
$hdd -> tunwei = '70';
$hdd -> yaowei = '70';
$hdd -> dance = function (){
    return '极乐净土';
};
echo $hdd ->name.'的三维是'.'、'.$hdd->xiongwei.'、'.$hdd->yaowei.'、'.$hdd->tunwei;
echo '他会跳'.call_user_func($hdd->dance).'<hr>';
class Boy{
    public $name;
    public $salary = 6800;
    private $age = 20 ;//私有成员本类访问
    protected $sex = 1;//受保护成员仅限本类或者子类访问
public function getSex(){
    return ($this->sex == 1) ? '女':'男';
}
public function getAge(){
    return ($this->sex == 0) ? $this->age : '保密';
}
}
$hdd2 = new Boy();
var_dump(is_null($hdd2->name));
echo $hdd2->salary,'<hr>';
echo '胡蛋蛋是',$hdd2->getSex(),'年龄',$hdd2->getAge(),'<hr>';点击 "运行实例" 按钮查看在线实例
2、类常量与类属性的重载
<?php
class Hdd{
    public $name = 'HDD';
    private $xiongwei = '70';
    private $tunwei = '70';
    private $yaowei = '70';
    private $type = '502';
    public function __construct($tunwei,$xiongwei,$yaowei){
        $this->tunwei = $tunwei;
        $this->xiongwei = $xiongwei;
        $this->yaowei = $yaowei;
        $this->show();
    }
    public function show(){
        echo $this->name.'的SW'.$this->xiongwei.$this->yaowei.$this->tunwei.'他属于'.$this->type;
    }
    //获取属性重载,返回属性名字。isset返回是布尔值
    public function __get($name)
    {
        if (isset($this->$name) && $name != 'xiongwei'){
            return $this->$name;
        }else{
            echo '无法得到';
        }
    }
    //更新属性重载
    public function __set($name, $value)
    {
        if ($name == 'xiongwei'){
            echo $name,'不可修改';
        }
        $this->$name = $value;
    }
    //检测属性重载
    public function __isset($name)
    {
        if ($name == 'type'){
            return false;
        }
        return isset($this->$name);
    }
    //销毁属性重载
    public function __unset($name)
    {
        if ($name = 'xiongwei' || $name = 'type')
        {
            return false;
        }
        unset($this->$name);
    }
}
$hdd3 = new Hdd('80','80','80');
echo '<hr>'.$hdd3->name.'<hr>';
$hdd3->type2;
$hdd3->type2 = 901;
echo isset($hdd3->type2)?'有':'无';
echo $hdd3->type2.'<hr>';
echo (isset($hdd3->type3)? '有':'无').'<hr>';
unset($hdd3->type2);
echo isset($hdd3->type2)?'有':'无';点击 "运行实例" 按钮查看在线实例
3、类的继承与方法重写
<?php
class Demo{
    public $name;
    protected $age;
    private $salary;
    const ID_NAME = 'llllll';
    public function __construct($name, $age)
    {
        $this->name = $name;
        $this->age = $age;
    }
}
class Demo_1 extends Demo{
    private $sex;
    const ID_NAME = 'mmmmm';
    public function __construct($name, $age,$sex = 'male')
    {
        parent::__construct($name, $age);
        $this->sex = $sex;
    }
    public function __get($name){
        if (isset($this->$name)){
            return $this->$name;
        }
        return '非法属性';
    }
}
$demo1 = new Demo_1('hdd','9','famale');
echo $demo1->name.'<hr>';
echo $demo1->age.'<hr>';
echo $demo1->sex.'<hr>';
echo $demo1->salary.'<hr>';//未出现结果,
//因为$salary是受保护的父类对象。子类是无法继承的
echo Demo_1::ID_NAME.'<hr>';
echo $demo1->sex.'<hr>';点击 "运行实例" 按钮查看在线实例
4、静态成员声明与访问
<?php
class Mysql{
    public static $pdo = null;
    protected static $db = [
        'type'=>'mysql',
        'host'=>'127.0.0.1',
        'dbname'=>'php',
        'user'=>'root',
        'pass'=>'root'
    ];
    public static function connect()
{
        $dsn = self::$db['type'].':host='.self::$db['host'].';dbname='.self::$db['dbname'];
        self::$pdo = new PDO($dsn,self::$db['user'],self::$db['pass']);
    }
    public static function select($table,$fields='*',$num=5){
        $stmt = self::$pdo->prepare(
            "SELECT {$fields} FROM {$table} LIMIT {$num};"
        );
        $stmt->execute();
        return $stmt->fetchALL(PDO::FETCH_ASSOC);
    }
}
Mysql::connect();
$res = Mysql::select('staff','name,age,salary',6);
echo '<pre>',var_export($res).'</pre>';点击 "运行实例" 按钮查看在线实例
运行截图:




四、总结
1、受保护成员仅限本类或者子类访问
2、受保护的父类对象,子类是无法继承的
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号