博客列表 >0903作业:PHP面向对象

0903作业:PHP面向对象

Samoye
Samoye原创
2018年09月04日 22:13:43722浏览

作业1:类的声明与实例化

实例

<?php
/**
类的声明与实例化
 */
//声明一个类man;
class man{ //类属性必须定义为公有,受保护,私有之一,可以不初始值;
    public $name;
    protected $sex;
    private $age;
    public function speak (){
        echo 'I can speak English !';
    }
    function __construct($name,$sex,$age) //构造方法,用来初始化
    {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }
}

//实例化一个类
$man1 =new man('peter','male',18);
//访问以下,他的方法
echo $man1->name;
echo '<br>';
$man1->speak();

运行实例 »

点击 "运行实例" 按钮查看在线实例

作业2:类常量与类属性的重载;

实例

<?php
/**
类常量与类属性的重载
 */

class staff{
    public $name;
    public $sex;
    protected $age;
    private $salary;
    const ATTACH_TO = 'Apple.lnc'; //类常量
    //构造方法

    public function __construct($name,$sex,$age,$salary)
    {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
        $this->salary = $salary;
    }

    // get方法的,全局
    public function __get($name)
    {
        if ($name == 'salary'){
            return $name.'不对外公开';
        }else{
            return $this->$name;
        }
    }
    // set 方法 更新属性重载
    public function __set($name, $value)
    {
        if ($name == ('age' or 'salary')){
            echo $name.'不允许更改!';
        }else{
            $this->name = $value;
        }
    }

    // isset 重载
    public function  __isset($name)
    {
        if ($name == 'salary'){
            return 'false';
        }
        return isset($this->$name); //有就返回true
    }

    //销毁属性重载
    public function  __unset($name)
    {
        if ($name == 'salary' || 'age'){
            return false;
        }
        unset($this->$name);
    }

}

//访问类常量
echo '隶属于:',staff::ATTACH_TO,'<br>';
//new 一个实例

$employee = new staff('core','meal','22',6000);

//访问 employee 的属性,方法

//公共属性,所以可以外部访问
echo '姓名:'.$employee->name.'性别:'.$employee->sex;
echo '<br>';
// 尝试获取私有属性
echo $employee->salary; //不对外公开
echo '<br>';
// isset 检测是否有该属性
echo isset($employee->friend)?'存在':'不存在';
echo '<br>';
//unset 销毁

unset($employee->age); //unset 无返回值
echo $employee->age;

运行实例 »

点击 "运行实例" 按钮查看在线实例

作业3:类的继承与方法重写

实例

<?php
/**
类的继承与方法重写
 * 子类可以继承父类除私有的全部属性
 * 子类重新父类方法,覆盖
 * 类常量也可以被重写
 */
class staff
{
    public $name;
    public $sex;
    protected $age;
    private $salary;
    const ATTACH_TO = 'Apple.lnc'; //类常量

    //构造方法

    public function __construct($name, $sex, $age, $salary)
    {
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
        $this->salary = $salary;
    }

    public function speak(){
        echo 'we can speak English!';
    }
}

class staff_cn extends staff{  //提高代码重用性。

    public $department; // 子类特有属性

    const ATTACH_TO = 'Apple.cn.lnc';//重写父类常量

    public function __construct($name, $sex, $age, $salary,$department) //重写父类构造方法(多态)
    {
       /* $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
        $this->salary = $salary;*/
        parent::__construct($name, $sex, $age, $salary);//引用父类,简化代码
        $this->$department= $department;
    }

    public function speak(){ //重写父类一般方法
        echo 'we can speak chinese and english!';
    }

}

$employee1 = new staff_cn('jimmy','male','66',8000,'cn');
//echo $employee1->salary;// 无法访问父类私有的属性
//echo $employee1->age; //只能在子类内部使用
$employee1->speak(); //调用子类的speak而不是父类的speak();
echo '<br>';
echo staff::ATTACH_TO;
echo '<br>';
echo staff_cn::ATTACH_TO;

运行实例 »

点击 "运行实例" 按钮查看在线实例

作业4:类中静态成员的声明与访问

实例

<?php
/**
    声明类属性或方法为 static(静态),就可以不实例化类而直接访问。

    静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。

    由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用,而是使用self。

    静态属性不可以由对象通过 -> 操作符来访问。
 *
 *
 *  范围解析符的作用:
 * 1. 访问静态成员;
 * 2. 访问类常量;
 * 3. 继承上下文中引用被覆盖成员
 */


class Demo5{
    //声明2个静态成员

    public static  $pdo;
    protected static  $db =['type'=>'mysql','host'=>'localhost','dbname'=>'stu','user'=>'root','pass'=>'root'];
    // 静态方法
    public static function connect(){  //用来连接数据库的方法
        $dsn = self::$db['type'].':host='.self::$db['host'].';dbname='.self::$db['dbname']; //拼接一个dsn 字符串

            self::$pdo = new PDO($dsn,self::$db['user'],self::$db['pass']); //将new 的pdo赋值给static变量
    }

    //准备SQL语句与执行

    public static function select($talbe,$fields,$num){

        // 搞一个预处理对象
         $stmt = self::$pdo->prepare("select  {$fields} from {$talbe} limit {$num}");
        //执行预处理语句
        $stmt->execute();
        //返回结果集
        return $stmt->fetchAll(PDO::FETCH_ASSOC);//只取关联数组,不要索引

    }

}

Demo5::connect(); //调用connect()方法连接数据库

$result = Demo5::select('student','name,sex,class',3); //调用select()方法,查询数据

echo '<pre>',var_export($result);

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议