很多站长朋友们都不太清楚个php魔术方法,今天小编就来给大家整理个php魔术方法,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP魔术方法__GET、__SET使用实例 2、 php中常用的魔术方法有哪些? 3、 php什么是魔术方法 4、 php魔术方法__tostring 5、 php魔术方法。。 6、 PHP常用的几个魔术方法 PHP魔术方法__GET、__SET使用实例__get()-
读取不可访问属性的值时,__get()
会被调用。
__set()-
在给不可访问属性赋值时,__set()
会被调用。
复制代码
代码如下:
<?php
/**
*
清晰的认识__get()
__set()
*/
class
Example
{
//公有的属性
public
$public
=
'pub'
;
//受保护的
-
子类中该属性可用
protected
$protected
=
'pro';
//私有的
-
只能此类使用此属性
private
$private
=
'pri';
//当访问对象中的属性不存在或者非公有属性的时候自动加载__get()方法
public
function
__get($name){
return
'调用__get()方法:'.$name;
}
//当给对象的一个属性赋值的时候如果该属性不存在或者是非公有属性则自动加载__set()方法
public
function
__set($name,$value){
echo
"\nname:".$name.',value:'.$value."\n";
}
}
$example
=
new
Example;
echo
'<pre>';
echo
$example->public."\n";
echo
$example->protected."\n";
echo
$example->private."\n";
echo
$example->other."\n";
echo
'<hr>';
$example->public
=
'lic';
//这个赋值成功所有没有显示
$example->protected
=
'tec';
$example->private
=
'vat';
$example->other
=
'er';
echo
'<br/>';
echo
'打印
public
属性:'.$example->public;
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什么是魔术方法__construct(),
__destruct(),
__call(),
__callStatic(),
__get(),
__set(),
__isset(),
__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
header("content-type:text/html;charset=utf-8");
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 里,将所有以 __(两个下划线)开头的类方法保留为魔术方法,所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。
魔术方法的引入是对面向对象编程思想的进一步实现,重载就是通过魔术方法来实现的。
PHP 魔术方法主要有:
__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(),__sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 和 __debugInfo() 等。
最常见的是__construct(), __destruct(),__get(), __set()等:
__construct和__destruct是类的构造函数和析构函数。
PHP常用的几个魔术方法Check if this entry is a directory or a file.
const size_t filenameLength = strlen(fileName);
if (fileName[filenameLength-1] == '/')
{
{
关于个php魔术方法的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于个php魔术方法 php魔术方法的讲解与使用的详细内容...