php魔术方法

Posted 农夫有鸡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php魔术方法相关的知识,希望对你有一定的参考价值。

  1. __construct  构造方法
     1 class Person
     2 {
     3     public $name;
     4 
     5     # 构造方法
     6     public function __construct($n){
     7         $this->name = $n;
     8     }
     9 
    10     public function say(){
    11         return "my name is {$this->name}";
    12     }
    13 }
    14 
    15 $obj = new Person(‘yach‘);
    16 echo $obj->say();

     

  2. __destruct  析构方法
    1 public function __destruct(){
    2     echo "<p>{$this->name}被清理</p>";
    3 }
    4 
    5 # 后进先出 (弹夹原理)

     

  3. __toString  对象说明
    class Usb
    {
        public function load(){
            echo "<p>load</p>";
        }
    
        public function __toString(){
            return ‘This is a obj‘;
        }
    }
    
    $obj = new Usb();
    echo $obj;

     

  4. __call  访问对象不存在的方法时调用
     1 class Usb
     2 {
     3     public function load(){
     4         echo "<p>load</p>";
     5     }
     6 
     7     public function __call($i,$j){
     8         return "<p>您访问的方法<b>{$i}</b>不存在</p>";
     9     }
    10 }
    11 
    12 $obj = new Usb();
    13 echo $obj->start();

     

  5. __get  提示无权限获取的方法
     1 class Usb
     2 {
     3     private function load(){
     4         echo "<p>load</p>";
     5     }
     6 
     7     public function __get($i){
     8         return "<p>您无权访问{$i}方法</p>";
     9     }
    10 }
    11 
    12 $obj = new Usb();
    13 echo $obj->load;

     

  6. __set  提示无权限设置的方法
     1 class Usb
     2 {
     3     private $name = ‘yu‘;
     4 
     5     public function __set($i,$j){
     6         echo "<p>您无权设置{$i}为{$j}</p>";
     7     }
     8 }
     9 
    10 $obj = new Usb();
    11 $obj->name = ‘yach‘;

     

  7. __isset  检测私有属性值是否被设定
     1 class Usb
     2 {
     3     private $name = ‘yu‘;
     4 
     5     public function __isset($i){
     6         return "<p>未设定{$i}属性</p>";
     7     }
     8 }
     9 
    10 $obj = new Usb();
    11 $b = isset($obj->name);
    12 echo $b;

     

  8. __unset  无权删除提示
     1 class Usb
     2 {
     3     private $name = ‘yu‘;
     4 
     5     public function __unset($i){
     6         echo "<p>您无权删除{$i}属性</p>";
     7     }
     8 }
     9 
    10 $obj = new Usb();
    11 unset($obj->name);

     

以上是关于php魔术方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的常见魔术方法功能作用及用法实例

巧用PHP中__get()魔术方法

了解 PHP 中的魔术方法 [重复]

php魔术方法。。

php啥是魔术方法

php魔术方法__tostring