Correction status:Uncorrected
Teacher's comments:
通过今天的学习,我学会了类的创建和实例,类常量和静态属性的创建和调用,以及类的继承与方法的重写,具体代码如下
1,类声明与类的实例化
<?php /** * 类的声明与实例化 * 1. 类声明: class; * 2. 类的实例化: new * 3. 对象成员的访问:-> */ //用关键字class声明一个类 class Demo1 { } //用关键字 new 实例化一个类 $demo1 = new Demo1(); //给当前对象添加一些属性和方法 $demo1->name = '朱老师'; $demo1->sex = '男'; $demo1->hello = function(){ return '我是一个自定义的类方法'; }; //使用对象访问符:-> 来访问对象中的成员(属性和方法) echo $demo1->name,': ',$demo1->sex,'<br>'; //错误的调用方式,因为当前对象方法不是一个普通函数,而是一个对象方法 //echo $demo1->hello(); //正确的调用方式,对象方法应该以回调的方式运行 echo call_user_func($demo1->hello);
点击 "运行实例" 按钮查看在线实例
2,类的继承与方法重写
<meta charset="UTF-8"> <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/9/4 * Time: 11:52 */ //父类 class test { //属性常量 const PAGE_NAME='WELCOME TO HANGZHOU'; private $name; private $age; public function __construct($name,$age) { $this->name=$name; $this->age=$age; } public function __get($name) { return $this->name; } public function __set($name, $value) { // TODO: Implement __set() method. return $this->$name=$value; } public function showResult() { return '我爱你,中国!'; } } class show extends test{ private $sex; // 子类构造函数 function __construct($name, $age,$sex='男') { //父类的构造方法 parent::__construct($name, $age); $this->sex=$sex; } } echo '父类类调用'; $result=new test('小红',12); //方法重载设置值 $result->name='小军'; echo $result->name; echo '<hr>'; echo '子类调用'; $show=new show('小米','55'); echo '姓名:',$show->name='小红'.'<br>'; echo '性别:',$show->sex='女'; echo '<br>'. '子类调用父类方法','<br>'; //子类调用父类方法 echo $show->showResult();
点击 "运行实例" 按钮查看在线实例
3,类常量与类属性的重载
<meta charset="UTF-8"> <?php class lianxi1{ //定义一个常量变量 const TITTLE_NAME='WELCOME TO MY HOME!'; //定义三个变量,分别访问范围府为public private ,protected public $name; private $age; protected $sex; //构造函数,类加载的时候进行初始化变量和方法 public function __construct($name,$age,$sex='男') { $this->name=$name; $this->age=$age; $this->sex=$sex; $this->show(); } function show() { return '姓名:'.$this->name.'年龄:'.$this->age.'性别:'.$this->sex; } //获取属性重载方法 public function __get($name) { return $this->$name; } //设置属性重载方法 public function __set($name, $value) { // TODO: Implement __set() method. return $this->$name=$value; } // 检测属性重载方法 public function __isset($name) { return isset($name)?$name:'没有访问权限'; } //删除属性重载方法 public function __unset($name) { if ($name='name') { unset($this->$name); } else { return false; } } } //调用常量方法 echo '输出常量变量:',lianxi1::TITTLE_NAME; echo '<hr>'; //实例化对象,设置默认的值 $result=new lianxi1('小明','20'); //var_dump($result); //访问属性,因为属性全部被封装,所以必须通过一个统一的外部接口访问 echo $result->show(); echo '<hr>'; //通过创建获取属性的重载方法,从而获取变量的值 echo '通过创建获取属性重载读取私有变量:年龄',$result->age; echo '<hr>'; echo '通过创建获取属性重载读取私有变量:性别',$result->sex; echo '<hr>'; //通过设置属性的重载方法,从而改变变量的值 echo '通过设置属性重载方法改变私有变量:年龄',$result->age=33; echo '<hr>'; //通过设置属性的重载方法,从而改变变量的值 echo '通过设置属性重载方法改变私有变量:年龄',$result->sex='女'; echo '<hr>'; echo '改变年龄和性别值后:',$result->show(); echo '<hr>'; echo '检测变量是否存在:'; echo isset($result->name) ? '存在<br>' : '<span style="color:red">不存在</span><br>'; echo '<hr>'; echo '删除变量后显示:'; unset($result->name); unset($result->age); unset($result->sex); echo '改变年龄和性别值后:',$result->show();
点击 "运行实例" 按钮查看在线实例
4,类中静态成员的声明与访问
<meta charset="UTF-8"> <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/9/4 * Time: 12:18 */ class test1 { //定义静态成员变量 private static $name; private static $age; private static $sex; public static function show() { echo '我叫:',self::$name,'今年:',self::$age,'岁,性别是',self::$sex; } public function __get($name) { // TODO: Implement __get() method. return $name; } function __construct($name,$age,$sex) { self::$name=$name; self::$age=$age; self::$sex=$sex; } } $a=new test1('小米','25','男'); echo test1::show();
点击 "运行实例" 按钮查看在线实例
总结:
继承 extents
定义常量const
静态属性 static
调用静态属性self
调用静态类::