首頁  >  文章  >  後端開發  >  php面向對象之重載

php面向對象之重載

不言
不言原創
2018-06-06 10:05:461198瀏覽

這篇文章主要介紹了關於php物件導向之重載,有​​著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

#定義:

#1 )動態地「創建」類別的屬性和方法。

2)透過魔術方法實現。

3)當呼叫目前環境下未定義或不可見的類別的屬性或方法時,重載方法會被呼叫。

屬性重載

__set      赋值

__get      读取

__isset    判断是否存在

__unset    销毁

範例

// 属性的重载
class Person
{
    public $name = '小芳';
    protected $age = 18;

    public function __get($n)
    {
        //echo '试图读取不可访问的属性'.$n;

        if( $n == 'age'){
            return $this -> age;
        }else{
            return '你要查户口吗?';
        }
    }

    public function __set($n,$v)
    {
        //echo &#39;试图设置不可访问的属性&#39;,&#39;<br/>&#39;;
        $this -> $n = $v;
    }

    public function __isset($n)
    {
        echo &#39;判断不可访问的属性&#39;.$n.&#39;是否存在&#39;,&#39;<br/>&#39;;
    }

    public function __unset($n)
    {
        echo &#39;销毁不可访问的属性&#39;.$n,&#39;<br/>&#39;;
    }
}

$p1 = new Person();

// 读取
//echo $p1 -> age,&#39;<br/>&#39;;
//echo $p1 -> xxx,&#39;<br/>&#39;;

// 设置
//$p1 -> age = 30;
//echo $p1 -> age,&#39;<br/>&#39;;

// 判断存在与否
isset($p1 -> age);

// 销毁
unset($p1 -> age);

方法重載

__call         调用不可访问的普通方法

__callStatic   调用不可访问的静态方法

特別注意,__callStatic定義時,要定義成靜態方法。

範例

<?php

class MyClass
{
    protected function func($n)
    {
        echo &#39;这是一个不可访问的方法&#39;;
        echo &#39;参数有&#39;.$n;
    }

    protected static function fun2()
    {
        echo &#39;受保护的静态方法&#39;;
    }

    public function __call($function_name,$args)
    {
        echo &#39;触发了不可访问的方法&#39;;
        var_dump($function_name);
        var_dump($args);
    }

    public static function __callStatic($function_name,$args)
    {
        echo &#39;触发了不可访问jing tai方法,静态!!!!&#39;;
        var_dump($function_name);
        var_dump($args);
    }
} 

// 实例化
$c1 = new MyClass();

$c1 -> func([1,2,3]);

$c1 -> func2([1,2,3]);

相關推薦:

php物件導向之封裝

php物件導向之魔術方法

php物件導向之靜態方法、屬性與常數

#

以上是php面向對象之重載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn