您现在的位置:首页 > 教案格式 > 正文

数组换位置一.介绍 PHP(外文名:PHP: Hyperte(25)

2018-02-02 05:05 网络整理 教案网

当把一个对象当作一个“字符串”来看待(处理)的时候,会自动调用该魔术方法。

通过该方法,可以返回“合适”的字符串,也可以认为就是对象转换为字符串的结果。

如果没有改方法,会出错。

<?php
class C1{
  public $v1 = 1;
  public $v2 = 2;
  function __tostring(){
    return "{$this->v1},{$this->v2}";
  } 
}
var_dump((string)new C1());
__invoke()

对象当作一个“方法”(函数)的时候,会自动调用该魔术方法。

<?php
class C1{
  public $v1 = 1;
  public $v2 = 2;
  function __invoke(){
    echo "你怎么可以拿对象当函数,好讨厌,锤你胸口";
  } 
}
$obj = new C1();
$obj();//打印:你怎么可以拿对象当函数,好讨厌,锤你胸口

系统函数

class_exists():判断某个类是否存在(定义过)

interface_exists():判断接口是否存在

get_class():获取某个对象的“所属类名”

get_parent_class():获取某个对象的“所属父类的类名”

get_class_methods():获取一个类的所有方法,返回一个索引数组,就是这些方法的名字。

get_class_vars():获取一个类的所有属性,返回一个数组,下标为属性名,值为属性值。

get_declared_classes():获得所有声明过的类(含系统中的类)

is_object():判断是否对象

get_object_vars():获得对象的所有属性,返回一个数组,下标为属性名,值为属性值

运算符

new:实例化类

instanceof:判断一个对象是否是某个类的“实例”

<?php
class C1{}
class C2 extends C1{}
$obj1 = new C1();
$obj2 = new C2();
var_dump($obj1 instanceof C1);//true
var_dump($obj2 instanceof C1);//true

当一个对象调用一个实例方法,然后,在该实例方法中又去“静态”调用另一个类的普通方法,则在类的普通方法中会自动获得在实例方法中的那个$this对象。

<?php
class C1{
  public $v1 = 1;
  function f1(){
    @C2::f2();
    @C2::f3();
  }
}
class C2{
  function f2(){
    var_dump($this);//有this
  }
  static function f3(){
    var_dump($this);//null
  }
}
$o1 = new C1();
$o1->f1();

static在类方法中代表调用该方法的对象所在的类

<?php
class C1{
  public static $v = 1;
  function f1(){
    echo self::$v;
    echo static::$v;
  }
}
class C2 extends C1{
  public static $v = 2;
}
$o1 = new C1();
$o2 = new C2();
$o1->f1();//11
echo "---";
$o2->f1();//1,2