php面向對象之重載

不言
發布: 2023-03-29 22:22:01
原創
1241 人瀏覽過

這篇文章主要介紹了關於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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板