魔术方法——一小部分函数用法--作用

__get()

__get()魔术方法,在外部访问该类中不能直接访问的属性时调用

       魔术方法都有其默认的定义格式,不能随意更改。

       魔术方法不能添加static静态的修饰符

代码:

 

 

 

加判定代码:

class City
{
    protected $name;
    private $area;
    function __construct($name, $area)
    {
        $this->name = $name;
        $this->area = $area;
    }
    /*__get魔术方法,在外部访问该类中不能直接访问的属性时调用
      *魔术方法都有其默认的定义格式,不能随意更改。
      *魔术方法不能添加static静态的修饰符
      *__get()魔术方法必须要有一个返回值
      *$name 对应的是类中的被声明的属性名称,格式为字符串
    */
   
function __get($name)
    {
//        echo'get调用'.$name;
       
if (isset($this->$name)) {
            return $this->$name;
        } else {
            return null;
        }
    }
}
$city = new City('成都', '3000平方公里');
echo '地名:' . $city->name . "<br>";
echo '面积:' . $city->area . "<br>";
echo '人口:' . $city->pel . "<br>";


效果:

 

         Ⅲ.__set() :

 

         __set魔术方法,在给类中无法直接访问的属性赋值时自动调用

     $name 被赋值的类中的属性名称,字符串格式

     $value 被赋予的值

 

                   代码:

class City
{
    protected $name;
    private $area;
    function __construct($name, $area)
    {
        $this->name = $name;
        $this->area = $area;
    }
    /*
     * __set
魔术方法,在给类中无法直接访问的属性赋值时自动调用
     * $name 被赋值的类中的属性名称,字符串格式
     * $value 被赋予的值
     */
   
function __set($name, $value)
    {
        /**
         * property_exists()
检测类或者对象中是否包括指定名称的属性
         */
       
if (property_exists($this,$name)) {
            return $this->$name = $value;
        }
        else{
            echo"类中没属性:".$name.'<br>';
        }
    }
}
$city->name = '重庆';
$city->pel = '15';
echo '地名:' . $city->name . "<br>";
echo '面积:' . $city->area . "<br>";
echo '人口:' . $city->pel . "<br>";
echo '<br>';

                  

 效果:

 

Ⅳ._isset()检测变量是否设置;__unset()销毁变量

      

Ⅴ.__call() $name 参数是要调用的方法名称。 $arguments 参数是一个枚举数组,包含着要传递给方法 $name 的参数。

 

call_user_func_array() 来访问类中的函数方法,参数随意。

 

 

Ⅵ. __toString()魔术方法,当使用字符串的方式来输出类的对象时被自动调用

 

代码:

 

         Ⅶ. __clone() 魔术方法,当类的对象被克时自动调用

 

     默认的克隆是浅克隆

     可以在克隆里修改值

 

代码:

 

 效果:

 

 

                  

posted @ 2017-07-22 19:11  电子E  阅读(187)  评论(0编辑  收藏  举报