声明,实例化,属性与类常量,自动加载章节作业

原创 2018-12-17 16:11:32 271
摘要:/*   * 类声明与实例化   * 类的声明:class 类名{}   * 类的实例化:new 类名();   * 对象成员的访问   * 类内部:$this->name   * 类外部:$o
/*
  * 类声明与实例化
  * 类的声明:class 类名{}
  * 类的实例化:new 类名();
  * 对象成员的访问
  * 类内部:$this->name
  * 类外部:$obj->name
  * */

/*
 * 类的声明:
 * class 类名{}
 * 类名:必须是合法标识符,只能以字母或下划线开始,后紧必须跟紧字母或下划线
 * 类名:行业约定,首字母大写
 * 类中成员:属性  和方法
 * 属性:就是类变量,类常量
 * 方法:函数来表示
 * */
 class Study //第一个字母大写
{
    public $name = 'Rambo'; //定义属性前要加public
    public $sex = '男';
    public $tel = '13888888888';

    //定义方法
    public function school($course,$school){
        $name = $this->name; //对象内访问可以用$this->
        $tel = $this->tel;
        return $name.'在'.$school.'学习'.$course.'<br>';
    }
}

//实例化
$str = new Study();
//外部访问用变量名->对象运算符
echo '姓名:'.$str->name,'<br>','性别:',$str->sex,'<br>电话:',$str->tel,'<hr>';
echo $str->school('PHP基础','PHP中文网'),'<hr>';

/*
 * 类属性与类常量
 *
 * 类属性:只能使用字面量或构造方法来初始化,不能使用表达式
 * 类常量:
 * 类常量必须要用const关键字声明
 * 类常量声明时必须初始化
 * 类常量推荐全部采用大写字母;
 * 类常量可以被所有类实例所共享
 * 类常量必须使用类名来访问:
 * 类内:self/static::CONST
 * 类外:类名::CONST
 * */

class Stu2
{
    public $name;
    public $age;
    public $course;
    const SHENG = '湖南';

    //构造方法
    /*
     * 1,在构造(创建)类的实例对象的时候,自动调用
     * 2,在双下划线开头,这类方法有一个特殊的名称:魔术方法(时间驱动)
     * 主要用于初始化类成员,或生成对象时自动完成的一些工作
     * */
    public function __construct($name,$course)
    {
        $this->name = $name;
        $this->course = $course;

    }

    public function quyu(){
        return $this->name.'的省份是:' . self::SHENG;

    }
}

//实例化
$str2 = new Stu2('杨过','PHP');
echo $str2->course.'<BR>';
echo $str2->name.'<br>';
echo $str2->name,'在学习',$str2->course,'<br>';
$str2 = new Stu2('欧阳锋','java');
echo $str2->name,'在学习',$str2->course,'<br>';
//::范围解析符 作用域作用符
//echo Stu2::SHENG;
echo $str2->quyu();

echo '<hr>';
/*
 * 类的自动加载
 * spl_autoload_register();注册自动加载器
 *repuire : 没导入成功 直接退出
 * include : 没有导入成功,只给出警告,脚本仍然指向
 *__DIR__ 魔术常量,绝对路径
 * */
//include 'public/Car.php';
spl_autoload_register(function ($ClassName){
    include __DIR__.'\public\\' . $ClassName . '.php';
});

$car = new Car('吉利','博越','150000');
echo $car->name,$car->brand,':'.$car->price,'<br>';


/*
 * 类成员的访问限制
 * 访问限制符  类的内部 类的继承上下文  类的外部
 * public      允许     允许         允许     //公共访问限制符
 * protected   允许     允许         禁止
 * private     允许     禁止         禁止
 * */

class Staff
{
    //public 公共,类的内部、外部,以及继承中都可以访问
    public $name;
    //protected  受保护的,仅在类内部,以及子类中使用,外部不可以访问
    protected $dept;
    //private 私有的  仅在类的内部,子类以及外部不可访问
    private $salary;

    //构造方法
    public function __construct($name,$dept,$salary)
    {
        $this->name =$name;
        $this->dept = $dept;
        $this->salary = $salary;
    }
    //创建一个接口,来访问外部受限的数据
    public function getdept(){
        if($this->dept =='财务部'){
            return '无权查询';
        }
       return $dept = $this->dept;
    }

    public function getsalary(){
        if($this->dept=='财务部'){
            return '这个部门你不能查看';
        }
        return $salary = $this->salary;
    }

}

//$staff = new Staff('rambo','网络部','3000');
$staff = new Staff('rambo','网络部','3000');

echo '名字:',$staff->name.'<br>';
//echo $staff->dept;
//echo $staff->salary;
echo '所属部门:'.$staff->getdept().'<br>';
echo '工资:',$staff->getsalary().'<br>';
/public/Car.php

<?php

class Car
{
    //定义属性
    public $name;
    public $brand;
    public $price;

    //构造方法
    public function __construct($name,$brand,$price){
        $this->name = $name;
        $this->brand = $brand;
        $this->price = $price;
    }
}

//实例化
//$car = new Car('日产','楼兰',260000);
//echo $car->name;


批改老师:韦小宝批改时间:2018-12-17 16:28:40
老师总结:写的很不错!注释写的都很清楚!课后还要记得多练习哦!自动加载也是很重要的一块!

发布手记

热门词条