Home  >  Article  >  php教程  >  php 类中的各种拦截器

php 类中的各种拦截器

WBOY
WBOYOriginal
2016-06-06 19:54:35893browse

1、__get( $property ) 访问未定义的属性时调用 class lanjie{ function __get($name) { echo $name. property not found! ; }}$ob = new lanjie();echo $ob-g; 当我们调用对象$ob未定义的属性g时,调用拦截器__get()方法,输出“g property not found!”;

1、__get( $property ) 访问未定义的属性时调用

 


 

class lanjie
{
    function __get($name)
    {
        echo $name." property not found! ";
    }
}


$ob = new lanjie();
echo $ob->g;



当我们调用对象$ob未定义的属性g时,调用拦截器__get()方法,输出“g property not found!”;

 

 

 


2、__set( $property , $value ) 给未定义的属性调用时赋值

 


 

class person
{
    private $_age;
    private $_name;
    function __set($name, $value)
    {
        $method = "set".  ucfirst($name);
        echo $method;
        if(method_exists($this, $method) )
        {
            return $this->$method( $value );
        }
    }
    
    function setName( $name )
    {
        $this->_name = $name;
        if( !is_null($this->_name) )
        {
            $this->_name = strtoupper($this->_name);
        }
    }
    function setAge( $age )
    {
        return $this->_age = (int)$age;
    }
}

$p = new person();
$p->name = 'bob';
print_r( array( $p ) );


这里我们可以很清楚的看到 , 当给未定义的‘name’赋值时 ,  会调用“__set()”


其他的还有 __call(), __isset() , __unset();

这里最有用和最常用的的是__call() , 当调用一个为存在的方法时被调用; __isset()是在对一个为定义的属性使用isset()函数时被调用, __unset是在对未定义的数以使用unset时被调用

 

http://blog.csdn.net/shuiping567541/article/details/7061258

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn