PHP 魔术方法

一、php中的魔术方法

  php在面向对象编程时有一些特殊的方法,会在特定的时机自动调用,我们将这类方法称为魔术方法。

二、常见的魔术方法及功能

  1.构造函数 __construct():当类被实例化为一个对象时自动调用,主要用来完成对象生成时初始化属性。

    例:

 1 <?php
 2
 3 class App{
 4
 5      public function __construct(){
 6
 7                 echo 1111;
 8     }
 9
10 }
11
12 $app=new App();//自动输出111

  2.析构函数 __destruct():当对象使用完毕,销毁对象前会自动调用。

     例:

 1 <?php
 2
 3 class App{
 4
 5      public function __construct(){
 6
 7                 echo 1111;
 8     }
 9
10      public function __destruct(){
11
12          echo 2222;
13 }
14 $app=new App();//先输出111,在输出222

3.__isset($name):在外部检测类中某属性是否存在时,如果该属性为私有属性或未定义属性,就会自动触发__isset($name)方法。

    例

<?php
class App{
  private $name=‘jack‘;
  public function __isset($name){
             //$name为外部查询的属性名
          if(isset($this->$name)){
                   echo‘ 请求不合法,你查询的是私有属性‘;
           }else{
                  echo ‘未定义的属性‘;
           }
    }
}
$app=new App();
isset($app->name);
//结果:请求不合法,你查询的是私有属性;
isset($app->age);
//结果:未定义的属性

4.__unset() 在外部删除类中属性时,如果该属性为类的私有属性或该属性未定义时,自动触发__unset方法。

例:

<?php
class App{
  private $name=‘jack‘;
  public function __unset($name){
             //$name为外部要删除的属性名
          if(isset($this->$name)){
                   echo‘ 请求不合法,你删除的是私有属性‘;
           }else{
                  echo ‘未定义的属性‘;
           }
    }
}
$app=new App();
unset($app->name);
//结果:请求不合法,你删除的是私有属性;
unset($app->age);
//结果:未定义的属性

5. __set($name,$value):当在外部给类中的属性赋值时,如果该属性未定义,则会触发__set($name,$value)。

<?php
class App{
  public function __set($name){
             //$name为外部要赋值的属性名
       echo 2222;
    }
}
$app=new App();
$app->name=‘jack‘;
//结果:2222

6.__get($name):当在外部调用类的属性时,如果该属性未定义,则会触发__get($name)方法。

   例

<?php
class App{
 public $name=‘jack‘;
  public function __get($name){
             //$name为外部要调用的属性名
       echo 333;
    }
}
$app=new App();
echo $app->name;//输出 jack;
echo $app->age ;//结果:333;

7.__call($name):当在外部调用类中的方法时,如果该方法未定义,则会触发__call($name)方法。

<?php
class App{
 public function run(){
   echo ‘去旅游‘;
 }
  public function __call($name){
             //$name为外部要调用的方法名
       echo 333;
    }
}
$app=new App();
echo $app->run();//输出  去旅游;
echo $app->play() ;//结果:333;

8. __autoload($name):一般用来自动加载类,如果类的命名规范,且要引用的类比较多,或防止忘记引用时,可以使用自动加载功能。

<?php

function __autoload($name){
   include   $name.‘class.php‘;
}
$app=new App();//会自动加载当前目录下的App.class.php
时间: 2024-11-05 06:07:14

PHP 魔术方法的相关文章

python中类的魔术方法

目的:学习python中class的magic methods,提高编程效率. 环境:ubuntu 16.4   python 3.5.2 在学习class是一定会接触到它的magic methods,比如常用__init__,形式都是前后有双下划线.除了这个必须的,还有其他有用的方法,下面大概的介绍一下. 运算魔法方法: __add__ 用作 + __sub__ 用作 - __mul__ 用作 * __truediv__用作/ __floordiv__用作// __mod__用作% __pow

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

静态、抽象类、加载类、魔术方法等

静态  static关键字 普通成员普通成员是属于对象的 静态成员静态成员是属于类的 普通方法里面可以调用静态成员静态方法里面不能调用普通成员self关键字 在类里面代表该类 普通类 class Ren { public $name="张三"; public static $zhongzu; //静态成员 普通方法 function Say() { echo self::$zhongzu."你好"; } 静态类 static function Run() { ech

PHP中的魔术方法总结

最近买了部安卓的手机,google nexus5 系统是安卓4.4.2. 刚到手就发现链接wifi有问题,一直在获取ip(obtaining ip...)和验证.试过恢复出厂 重启 各种都不管用,只有设置静态ip才可以,但是不能一直这样子呀!! 查了下路由器,路由器已经分配了地址.所以最大可能就是安卓手机上拿到这个地址没有成功写入配置文件,为什么没有写入呢,就是权限的问题了,不明白为什么google会出现这个错误. 因为不熟悉安卓系统,所以查了好几天,终于在一个外国网站上发现了下面这个解决办法,

php魔术方法

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload 1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的 __get( $property ) 当调用一个未定义的属性时访问此方法 __set( $pro

魔术方法

特点: 以--(两个下划线)开头的类方法,会自动被调用. 常见的魔术方法有15个: __set(变量名称,变量值)(不需要有返回值):在给不可访问属性赋值时,__set() 会被调用. 标准形式不能改: 需要设置值和值的类的属性名称, 魔术方法必须是公共的(Public),且不能定义为静态的(static).被访问的属性名称,必须是字符串.当在类的外部调用不能直接访问不能直接访问的属性时,该函数会自动被调用. property_exists(字符串形式的类名或要检查的对象,属性名字)- 检查对象

PHP中的面向对象OOP中的魔术方法

一.什么是魔术方法: PHP为我们提供了一系列用__开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数.例如: function __construct(){} 在new一个新对象时自动调用此函数 二.PHP中都有那些魔术方法,以及它们的作用:1.__construct():构造函数,new对象时自动调用 eg: class Person{ public $name; public $age; function __construct($name,$age){ $

php中常用到的魔术方法

PHP面向对象中有很多功能很强大,不得不说的就是魔术方法了.今天抽出时间记录几个比较常用的魔术方法: 1.__construct 这是构造函数,指当一个类被实例化的时候就会自动调用的函数.那我们可以在这里初始化变量的值.例如: class Score { public $chinese; public $english; public $math; public function __construct($chinese=100,$english=99,$math=98) { $this->ch

php中的魔术方法(Magic methods)和魔术常亮

PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或empty()时调用 __unset(),