php对魔术方法的认识:1、【_set】属性不存在时自动设置属性;2、【__get】属性不存在或不能读取时,设置该方法可读取;3、【__call】方法不存在时,执行;4、【__callStatic】静态方法不存在时,执行。

php对魔术方法的认识:
1、_set:属性不存在时自动设置属性
/**
* 属性不存在时通过__set自动设置属性
* @param $key [键名]
* @param $value [属性值]
*/
function __set($key,$value){
$this->arr[$key] = $value;
}
代码:
$object->title = 'blue'; //设置不存在的属性,调用__set()
echo $object->title,'<br/>'; //输出不存在的属性,调用__get()
输出:
blue2、__get:属性不存在或不能读取时,设置该方法可读取
/**
* 属性不存在或不能读取(属性为私有private)时,通过__get读取
* @param $key 键名
* @return 属性
*/
function __get($key){
return $this->arr[$key];
}3、__call:方法不存在时,执行
立即学习“PHP免费学习笔记(深入)”;
IMCart是目前国内首家最为完善的开源b2c商城系统。同时也是PAYPAL官方认证建站系统的金牌合作伙伴。系统支持多语言,多站点,移动端, 本地国际化,API对接等,丰富的营销功能跟完善的商品体系,优良的下单体验,更为符合SEO优化,完善的插件支持/模板中心更是让IMCART更加无法 替代。而IMCART全新的技术架构、全新的UI设计、丰富的促销体系、官方各项服务支持能从根源上解决了目前市面上一
0
/**
* 方法不存在时,执行__call方法
* @param $func [方法名]
* @param $param [参数]
* @return [description]
*/
function __call($func,$param){
var_dump($func);
echo '<br/>';
var_dump($param);
echo '<br/>';
}
代码:
$object -> show('hello','world'); //调用不存在的方法,调用__call()
输出:
string(4) "show"
array(2) { [0]=> string(5) "hello" [1]=> string(5) "world" }4、__callStatic:静态方法不存在时,执行
/**
* 静态方法不存在时,执行__callStatic方法
* @param $func [方法名]
* @param $param [参数]
* @return [description]
*/
static function __callStatic($func,$param){
var_dump($func);
echo '<br/>';
var_dump($param);
echo '<br/>';
}
代码:
IMooc\Object::show('hello','world'); //调用不存在的静态方法,调用__callStatic()
输出:
string(4) "show"
array(2) { [0]=> string(5) "hello" [1]=>string(5) "world" }5、__toString:当对象转换为字符串时,执行
/**
* 当对象转换为字符串时,执行__toString方法
* @return string [description]
*/
function __toString{
return __CLASS__;
}
代码:
echo $object,'<br/>'; //将对象以字符串形式输出,调用__toString()
输出:
IMooc\Object6、__invoke:当把对象当成函数来使用时,执行
/**
* 当把对象当成函数来使用时,执行__invoke方法
* @param [type] $param [参数]
* @return [type] [description]
*/
function __invoke($param){
var_dump($param);
}
代码:
echo $object('hello'); //将对象当函数使用,调用__invoke()
输出:
string(5) "hello"相关免费学习推荐:php编程(视频)
以上就是php对魔术方法的认识的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号