php5 学习记要(2)

php中文网
发布: 2016-06-13 13:17:38
原创
1291人浏览过

php5 学习记录(2)

一、重载性能

1、属性和方法的重载

php 允许通过实现特殊的代理方法对属性的访问和方法的调用进行重载,这些代理方法将在相关的属性或者方法不存在时调用。这种特性让你在中端这些动作并定义你自己的功能时获得巨大的灵活性。

你可以实现下面的方法原型:

function __get($property) // 传递属性的名字,并且返回属性值

立即学习PHP免费学习笔记(深入)”;

function __set($property, $value) // 传递属性的名字和新的值

function __call($method, $args) // 传递方法的名字和一个数字索引的数组,数字包含传递的参数,第一个参数的索引是0。

?

豆包爱学
豆包爱学

豆包旗下AI学习应用

豆包爱学 674
查看详情 豆包爱学

?

class Users {
    
    private $arr = array();

    function __get($name) {
        return $this->arr[$name] === NULL ? 'null' : $this->arr[$name];
    }

    function __set($name, $value) {
        $this->arr[$name] = $value;
    }

}

$user = new Users();
$user->a = 'xiezheng';
print $user->a;
登录后复制

__call()具有很多用途,它主要用来监控一个对象中的其他方法。如果你试着调用一个对象中不存在的方法,__call方法将会被自动调用。

?

class HelloWorld {
    function display($count) {
        for($i=0; $i<$count; $i++)
            print __CLASS__.'<br />';
        return $count;
    }
}

class HelloWorldCall {
    private $obj;
    function __construct() {
        $this->obj = new HelloWorld();
    }

    function __call($method, $args) {
        return call_user_func_array(array($this->obj, $method), $args);
    }
}

$hwc = new HelloWorldCall();
print $hwc->display(3);
登录后复制
?

?

2、使用数组语句访问的重载。

为了让你的类能够重载数组语句的访问,你的类需要实现ArrayAccess接口。

bool offsetExists($index)

mined offsetGet($index)

void offsetSet($index, $new_value)

void offsetUnset($index)

以上是ArrayAccess需要实现的方法。

?

?

class Users implements ArrayAccess {
    
    private $uname;

    function offsetExists($name) {
        return $this->uname === NULL;
    }

    function offsetGet($name) {
        return $this->offsetExists($this->uname) ? 'NULL' : $this->uname;
    }

    function offsetSet($name, $value) {
        $this->uname = $value;
    }

    function offsetUnset($name) {
        $this->uname = null;
    }

}

$user = new Users();
$user['name'] = 'xiezheng';
// unset($user['name']);
print $user['name'];
登录后复制
?

?

?

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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