Heim  >  Artikel  >  php教程  >  php 类中的各种拦截器

php 类中的各种拦截器

WBOY
WBOYOriginal
2016-06-06 19:54:35895Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php导出excel格式数据Nächster Artikel:PHP Socket配置以及实例