数组换位置一.介绍 PHP(外文名:PHP: Hyperte(25)
当把一个对象当作一个“字符串”来看待(处理)的时候,会自动调用该魔术方法。
通过该方法,可以返回“合适”的字符串,也可以认为就是对象转换为字符串的结果。
如果没有改方法,会出错。
<?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
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-25.html
http://www.jiaoanw.com/
true
教案网
http://www.jiaoanw.com/%E6%95%99%E6%A1%88%E6%A0%BC%E5%BC%8F/article-25814-25.html
report
1826
当把一个对象当作一个“字符串”来看待(处理)的时候,会自动调用该魔术方法。 通过该方法,可以返回“合适”的字符串,也可以认为就是对象转换
蛆都变无氧呼吸的了