Login
网站首页 > 文章中心 > 其它

讲讲php的魔术方法_Php魔术方法

作者:小编 更新时间:2023-07-31 17:33:58 浏览量:142人看过

php魔术方法..

在 PHP 里,将所有以 __(两个下划线)开头的类方法保留为魔术方法,所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀.

魔术方法的引入是对面向对象编程思想的进一步实现,重载就是通过魔术方法来实现的.

讲讲php的魔术方法_Php魔术方法-图1

PHP 魔术方法主要有:

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等.

最常见的是__construct(), __destruct(),__get(), __set()等:

__construct和__destruct是类的构造函数和析构函数.

php什么是魔术方法

__construct(),

__destruct(),

__call(),

__callStatic(),

__get(),

__set(),

__isset(),

讲讲php的魔术方法_Php魔术方法-图2

__unset(),

__sleep(),

__wakeup(),

__toString(),

__invoke(),

__set_state(),

__clone()

__debugInfo()

等方法在

PHP

中被称为"魔术方法"(Magic

methods).在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能.

php魔术方法__tostring

__tostring()方法:在直接输出对象引用的时候,就不会产生错误,而是自动调用了__tostring()方法,输出__tostring()方法中返回的字符串

通俗来说就是 对象一般是使用print_r() 或 var_dump() 来打印访问

但对于一般闲的人来说直接 使用 echo 输出对象时,必定会报错的,原因是对象无法使用echo的.

这个时候如果想解决这个错误,咱们应该怎么操作呢?

可以很好的利用__tostring()这个魔术方法

但是切记使用__toString() 时返回值一定要使用return 来进行返回.

php

class demo{

public $foo;

public function __construct($foo){

$this-foo=$foo;

}

//定义一个__toString()方法时,返加一个成员属性$foo

public function __toString(){

return $this-foo;

$demo=new demo('hello PHP成员');

echo $demo;

php中常用的魔术方法有哪些?

php规定以两个下划线__开头的方法都保留为魔术方法,建议自定义函数的函数名最好避开.

__construct() 实例化类时自动调用.

__destruct() 类对象使用结束时自动调用.

__set() 在给未定义的属性赋值的时候调用.

__get() 调用未定义的属性时候调用.

__isset() 使用isset()或empty()函数时候会调用.

__unset() 使用unset()时候会调用.

__sleep() 使用serialize序列化时候调用.

__wakeup() 使用unserialize反序列化的时候调用.

__call() 调用一个不存在的方法的时候调用.

__callStatic()调用一个不存在的静态方法是调用.

__toString() 把对象转换成字符串的时候会调用.比如 echo.

__invoke() 当尝试把对象当方法调用时调用.

__set_state() 当使用var_export()函数时候调用.接受一个数组参数.

__clone() 当使用clone复制一个对象时候调用.

以上就是土嘎嘎小编为大家整理的讲讲php的魔术方法相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章