标签:构造函数 访问 tun int 魔术方法 print 析构函数 clone() highlight
__construct:构造函数,一旦创建对象都就会自动调用
__call:当调用了未定义的方法时会自动触发
__set:当给类外部不可访问的属性设置值时会自动触发
__get:当获取类外部不可访问的属性时会自动触发
__isset:当对类外部不可访问的属性使用了isset()或empty()时会自动触发
__unset:当对类外部不可访问的属性使用了unset()时会自动触发
__destruct:当对象结束其生命周期时就会自动触发
<?php
header("content-type:text/html;charset=UTF-8");
class Magic{
private $testGet; //私有测试__get魔术方法的属性
private $testSet; //私有测试__set魔术方法的属性
private $testIsset; //私有测试__isset魔术方法的属性
private $testUnset; //私有测试__unset魔术方法的属性
public static $a=1; //私有用于测试__clone魔术方法的常量
/**
* 测试构成方法,创建新对象时先调用此方法
*/
public function __construct(){
echo static::$a+2;
echo "这是构造函数"."<br>"."<br>";
}
/**
* 测试isset方法,这是当不可访问的属性被调用了isset()或者empty()方法时会触发
*/
public function __isset($name){
echo "对不可访问属性:".$name."调用 isset() 或 empty()"."<br>"."<br>";
}
/**
* 测试unset方法,这是当不可访问的属性被调用了unset()方法时会触发
*/
public function __unset($name){
echo "当对不可访问属性:".$name."调用unset()"."<br>"."<br>";
}
/**
* 测试call方法,这是当调用了未定义的方法时会触发
*/
public function __call($method,$agrs){
echo "调用了不存在的方法:".$method."<br>"."这是接收的参数:";
print_r($agrs);
echo "<br>"."<br>";
}
/**
* 测试set方法,这是当不可访问的属性被设置时会触发
*/
public function __set($name,$data){
echo "调用了不可设置的属性:".$name."<br>"."参数为:".$data."<br>";
}
/**
* 测试get方法,这是当不可访问的属性被访问时会触发
*/
public function __get($name){
echo "调用了不可获取的属性:".$name."<br>"."<br>";
}
/**
* 测试clone方法,这是类被克隆时会触发
*/
public function __clone(){
echo static::$a+1;
echo "我被克隆了"."<br>"."<br>";
}
/**
* 测试析构方法,这是当在脚本关闭时被调用
*/
public function __destruct(){
echo "这是析构函数";
}
}
$test=new Magic(); //实例化Magic类,触发构造函数
$test->callMethod(‘123‘); //调用不存在的方法
$test->testSet=123; //设置类外部不可访问的属性
$test->testGet; //获取类外部不可访问的属性
$test2=clone $test; //克隆test类,开辟了另一份一模一样的属性和方法存储空间,但相互不会影响
isset($test->testIsset); //用isset执行类外部不可访问的属性
unset($test->testUnset); //用unset执行类外部不可访问的属性
标签:构造函数 访问 tun int 魔术方法 print 析构函数 clone() highlight
原文地址:https://www.cnblogs.com/legendheng/p/9175692.html