首页 > 作文

PHP7

更新时间:2023-04-08 09:12:35 阅读: 评论:0

php 面向对象

静态属性 static

// 使用场景: 类的一些公用属性和方法,值有可能改变// 如何访问 静态属性呢// 通过  lf::方法 或者 属性  , 就可以访问到类的静态属性# 切记: 静态属性和方法只能类自己访问,不能实例对象访问。<?php class people {    protected static $classname = '大三老学长';    public function getclassname(){        echo '他是'.lf::$classname;        #他是大三老学长    }}

const 类常量定义使用

// 使用场景: 值不会变化时,使用// 如何访问const 常量// lf::常量名字<?php class peole {    const name = '海军';    public function getname(){        echo lf::name;    }}$hj = new peole();$hj->getname();# 海军

禁止重写父类方法或者属性 final

//使用场景: 父类不想让子类重写自己的方法或者属性 时使用# 使用  final <?php  # 父类class peole {    const name = '海军';    # 在 function 前加 final    public  final function  getname(){        echo lf::name;    }}# 子类class woman extends peole {    public function getname(){        echo '子类不能重写父类';    }}$woman = new woman();$woman->getname(); # 调用时,结果报错

抽象类抽象方法

// 使用场景:子类继承了父类, 并且必须实现父类的某些方法 时使用# 格式:  abstract# 注意:  类为抽象类时;不能实例化对象调用方法和属性,类本身也不能自身调用属性和方法。<?php abstract class peole {    protected static $classname = '大三老学长';    //抽象方法    abstract public function learn();    public function getclassname(){        echo '他是'.lf::$classname;    }}class woman extends peole {    public function getname(){        echo '子类不能重写父类';    }    public function learn(){        echo '有阅读的能力';    }}// 类为抽象类时不能实例化对象,也不能自己调用自己// $hj = new peole();// $hj->getname();// echo "<hr/>";// $hj->getclassname();class woman extends pe无定形二氧化硅ole {    public function getname(){        echo '子类不能重写父类';    }    public function learn(){        echo '有阅读的能力';    }}$woman = new woman();$woman->getname();$woman->learn();

变相多继承 trait 使用

//使用场景: 当类需要继承多个基类时采用,(php以前一直是单继承)// 格式: #trait 变量名{}     类中使用trait:  u  变量名# 1.基本使用<?php trait student {    public $name = '姓名';    public function getnames(){        echo __method__;    }}class school {    u student;}$smallschool = new school();echo $smallschool->name;$smallschool->getnames();

trait 优先级

# 2.优先级问题,    #2.1父类和基类有同样的方法,调用访问时会访问父类的方法    #2.2子类继承了父类,也使用了trait,调取同样的方法时,优先采      用trait的方法<?php trait student {    public $name = '姓名';    public function getnames(){        echo '我是 trait';    }}class school  {    u student;    public function getnames(){        echo '我是 school';    }}class teacher extends school {    u student;}$teacher  = new teacher();$teacher->getnames();// 结果为: 我是 trait  //  当子类继承了父类, 父类和trait 有同样的方法, 子类实例对象调用同样方法名时,优先采用trait的方法

解决trait 方法冲突 insteadof as

// 应用场景:  当多个trait时,可能会有同名的方法,类的实例对象调用时,就会冲突;# 解决办法:  1.insteadof  2. as# u 变量1,变量2{#        变量1:: getnames insteadof 变量2;          // 解释: 变量1的getnames 方法替代了 变量2#        patriarch:: getnames as gettoname;        // 解释: 将变量2的方法通过 as 别名,调用#    }<?php trait student {    public $name = '姓名';    public function getnames(){        echo '我是 student';    }}trait patriarch {    public function getnames(){        echo '我是 patriarch';    }}class school  {    u student,patriarch{        student:: getnames insteadof patri中国美歌词arch;        patriarch:: getnames as gettoname;    }    public function getnames(){        echo '我是 school';    }}$school = new school();$school->getnames();  //我是 schoolecho "<hr/>";$school->gettoname();echo "<hr/>";   //我是 patriarch

trait 访问控制 protected

trait patriarch {    protected function getnames(){        echo '我是 patriarch';    }}class school  {    u patriarch{        patriarch:: getnames as gettoname;    }}$school = new school();$school->gettoname();   //访问就会报错,受保护的

trait 使用情况

trait 中可以使用abstract方法trati 中可以使用 静态方法

魔术方法

所谓魔术方法,它就是php 中提供了一些函数,在某些时刻自动调用,处理一些逻辑,执行时间不同。

类似于 生命周期, 钩子函数。

construct 构造函数

<?phpclass girl{    private $name;    public function __construct(string $names)    {        echo $this->name = $names;    }}new girl('小红');

_t and _get

// 使用场景: 一般类的属性或者方法为私有或者受保护的,这样类的实例是不能直接访问和修改的,想访问类的这些属性就得使用  _t   _get 方法, 当访问私有属性或者方法时,会自动调用_t  and  _get 方法中的内容。# 格式:  t 有两个参数    get有学习决心书一个参数 public function __get($names)    {        echo '获取私有和受保护的旧牛仔裤改造属性时,自动调用';        return $this->$names;    }    public function __t($name, $value)    {        echo '设置私有和受保护的属性时,自动调用------';        $this->$name = $value;    }# 注意: 如果类中没有创建这两个函数 _t  _get ,在访问私有属性 方法和受保护属性方法就会警告。#完整代码<?php class car {    private $price = '$9w';    private $name = '奥迪';    public $place = '美国';    public function __get($names)    {        echo '获取私有和受保护的属性时,自动调用';        return $this->$names;    }    public function __t($name, $value)    {        echo '设置私有和受保护的属性时,自动调用------';        $this->$name = $value;    }}$car = new car();echo '<hr/>';echo $car->name;echo '<hr/>';echo $car->place;echo '<hr/>';$car->prive = '22$';echo $car->price;# 输出内容获取私有和受保护的属性时,自动调用奥迪美国设置私有和受保护的属性时,自动调用------获取私有和受保护的属性时,自动调用22$

_call

//使用场景:  当调用了类中不存在的方法时,程序会停止运行,为了防止 误调用,程序断开,使用_call 来处理此情况# 格式 __call($functionname, $arg)  参数1为方法名   参数2 为传递参数# 完整代码<?php class car {    public function __call($functionname, $arg)    {        echo '类中没有该函数,函数名为:'.$functionname;        echo '<hr/>';        print_r($arg);    }}$car = new car();$car->run(1,2,3,4);  //类中没有该函数,函数名为:run  array ([0] => 1[1] => 2[2] => 3[3] => 4 ) 

__callstatic

//使用场景:  __callstatic 当调用的静态方法不存在或权限不足时,会自动调用__callstatic方法。# 格式 __callstatic($functionname, $arg)  参数1为方法名   参数2 为传递参数#完整代码<?php class car {    public function __call($functionname, $arg)    {        echo '调用函数名为'.$functionname;        echo '<hr/>';        print_r($arg);    }    public static function __callstatic($name, $arguments)    {        switch ($name) {            ca 'fly':杭州音乐学院                echo 'fly : ------->   通过switch 来判断执行不同的业务逻辑';            break;            default:                echo '您访问的静态方法类没有';        }    }}car::fly();//fly : -------> 通过switch 来判断执行不同的业务逻辑echo '<hr/>';car::eat();//您访问的静态方法类没有

更多学习内容请访问:

怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)

本文发布于:2023-04-08 09:12:32,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/210629a267adf71328040d52bd55f460.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP7.doc

本文 PDF 下载地址:PHP7.pdf

标签:方法   属性   我是   子类
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图