博主信息
博文 40
粉丝 1
评论 0
访问量 40136
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php的重载技术
李明伟的博客
原创
1073人浏览过
//重载技术
//重载:动态的创建类属性和方法
//属性重载
//__set(),__get(),__isset(),__unset()
//const IS_ISSET = true;
//const IS_GET = true;
//const IS_SET = true;
//const IS_UNSET = false;
//
//class Visit
//{
//    protected $data = [];
//
//    public function __isset($name)//在判断是否存在时自动执行
//    {
//        return IS_ISSET && isset($this->data[$name]);
//    }
//
//    public function __get($name)//外部对内部的值进行访问时自动执行
//    {
//        return IS_GET ? $this->data[$name] : '非法访问';
//    }
//
//    public function __set($name, $value)//对对象的成员进行赋值是自动调用
//    {
//        IS_SET ? $this->data[$name] = $value : '禁止赋值';
//    }
//
//    public function __unset($name)//在外部对内部成员进行销毁时自动调用
//    {
//        if (IS_UNSET) {
//            unset($this->data[$name]);
//        } else {
//            echo '禁止删除';
//        }
//    }
//}
//
//$visit = new Visit();
//if (isset($visit->table)) {
//    echo $visit->table . '<br>';
//} else {
//    $visit->table = 'table_staff';
//}
//
////访问
//echo $visit->table . '<br>';
//
////更新
//$visit->table = '员工表' . '<br>';
//
////访问
//echo $visit->table . '<br>';
//
//unset($visit->table);

//方法重载
//_call(),_callStatic()
//class Site
//{
//    public function show($argumnets)
//    {
//        $title = func_get_arg(0);//获取方法中的参数
//        $desc = func_get_arg(1);
//        return 'Site::show()<br>站点名称' . $title . '<br>站点描述:' . $desc;
//    }
//
//    public static function add($argument)
//    {
//        $m = func_get_arg(0);
//        $n = func_get_arg(1);
//        return 'Site::add()<br>'.$m.'+'.$n.'='.($m+$n);
//    }
//}
//
//class Web
//{
//    //当访问一个不存在的动态方法的时候会自动调用,$name为方法名,$arguments为参数
//    public function __call($name, $arguments)
//    {
////        return '方法:'.$name.'<br>参数列表:'.var_export($arguments,true);
//        //方法重载更多的用在跨类的方法调用上,第一个参数为一个数组,数组的第一个值为要访问的类的实例化,第二个值为调用的访问类的方法,第二个参数为传给该方法的值
//        return call_user_func_array([(new Site),'show'],$arguments);
//    }
//
//    //当访问一个不存在的静态方法的时候会自动调用,$name为方法名,$arguments为参数
//    public static function __callStatic($name, $arguments)
//    {
//        //跨类调用一个静态方法
//        return call_user_func_array(['Site','add'],$arguments);
//    }
//
//}
//
//$web = new Web();
//
////访问一个不存在的方法
//echo $web->show('李铭炜','牛逼').'<hr>';
//echo Web::add('1','2');

属性重载的方法:

__get()方法:在外部对内部成员的值进行访问时自动调用

__set()方法:在外部对内部存在或不存在的成员进行初始化或者赋值时自动调用

__isset()方法:在外部判断内部成员是否存在时自动调用

__unset()方法:在外部对内部成员进行删除操作时自动调用,若不进行覆写,默认外部无法删除内部成员

方法重载的方法:

__call()方法:在外部调用类中不存在的动态方法时触发重载方法

__callStatic()方法:在外部调用类中不存在的静态方法时触发重载方法

call_user_func([类名,方法名],传过去的参数(字符串类型))函数:调用一个回调函数(常为其他类的方法)处理传过去的参数

call_user_func_array([类名,方法名],传过去的参数(数组类型))函数:调用一个回调函数(常为其他类的方法),处理传过去的参数

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学