分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

php常用的魔术方法

发布时间:2023-09-06 01:59责任编辑:苏小强关键词:暂无标签

__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执行类外部不可访问的属性

php常用的魔术方法

原文地址:https://www.cnblogs.com/legendheng/p/9175692.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved