Home php教程 php手册 PHP5魔術方法的调用实例

PHP5魔術方法的调用实例

Jun 13, 2016 am 10:51 AM
php5 function Example object method hour of transfer magic

PHP5魔術方法
 
魔术函数:  
 
1。__construct()
 
  构造函数 : 实例化对象时被调用,
 
  当__construct和以类名为函数名的构造函数同时存在时,__construct将被调用,另一个不被调用。
 
2。__destruct()
 
析构函数 : 当删除一个对象或对象操作终止时被调用(程序结束后对象就摧毁)。
 
永远都是最后执行的。
 
3。__call()
 
  对象调用某个方法,
 
  若方法存在,则直接调用;
 
若不存在,则会去调用__call函数。
 
4。__get()
 
  读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。
 
  5。__set()
 
  设置一个对象的属性时,
 
  若属性存在,则直接赋值;
 
  若不存在,则会调用__set函数。
 
  6。__toString()
 
  打印一个对象的时被调用。如echo $obj;或print $obj;
 
  7。__clone()
 
  克隆对象时被调用。如:$t=new Test();$t1=clone $t;
 
  8。__sleep()
 
  serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
 
  9。__wakeup()
 
  unserialize时被调用,做些对象的初始化工作。
 
  10。__isset()
 
  检测一个对象的属性是否存在时被调用。如:isset($c->name)。
 
  11。__unset()
 
  unset一个对象的属性时被调用。如:unset($c->name)。
 
  12。__set_state()
 
  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
 
  13。__autoload()
 
  实例化一个对象时,如果对应的类不存在,则该方法被调用。
 
  魔术常量
 
  1。__LINE__
 
  返回文件中的当前行号。
 
  2。__FILE__
 
  返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。
 
  3。__FUNCTION__
 
  返回函数名称(PHP 4.3.0 新加)。自PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在PHP 4 中该值总是小写字母的。
 
  4。__CLASS__
 
  返回类的名称(PHP 4.3.0 新加)。自PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在PHP 4 中该值总是小写字母的。
 
  5。__METHOD__
 
  返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
 
  (1)初识魔术方法
 
  Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。
 
PHP | 魔术方法| __toString(),__clone(),__call(),__autoload() 详解
 
__toString()
 
如果我有一个类:
 
class Person
 
{
 
private $name = “”;
 
private $age = 0;
 
function __construct($name = “”, $age = “”)
 
{
 
$this->name = $name;
 
$this->age = $age;
 
}
 
function say()
 
{
 
echo “name:”.$this->name.”
”.”age:”.$this->age.”
”;  
 
}
 
}
 
现在我去实例化这个类,然后去打印这个实例:
 
$p1 = new person(“liuzy”,20);
 
echo $p1;  //直接打印会出错
 
显然这样直接打印对象是会出现错误的,因为对象是引用句柄,不能直接打印。这时,我们可以用到__toString()方法。我们在Person类里加一个__toString()方法:
 
function __toString()
 
{
 
return “I am  Person,my name is “.$this->name.”
”;
 
}
 
然后再刷新页面,发现什么了?
 
现在我们明白,__toString()是在直接打印对象时执行的方法,我们可以用该方法打印类的一些相关信息。注意:是两个下划线,方法必须有返回值。
 
__clone()
 
我们知道对象是可以直接赋值的,比如
 
$p2 = $p1;   //这里是一个对象有两个引用
 
那么我执行:
 
$p1->say();
 
$p2->say();
 
是都可以执行的,而且效果一样。
 
我们还有一种方法:
 
$p3 = clone $p1;     //注意clone是克隆关键字,这里与上面的不同是$p3是一个新的对象。
 
同时我们在类里加入一个方法:
 
function __clone()
 
{
 
$this->name = “我是副本”;  //注意:这里的$this是克隆产生的对象本身,不是当前类
 
}
 
然后我们执行:
 
$p3->say();
 
打印出:
 
name:我是副本
 
age:20
 
到这里我们明白,__clone()方法是在克隆对象的时候执行的方法,它的作用是对新克隆出来的副本
 
进行属性初始化等操作。
 
__call()
 
这个方法的主要功能是:在该类的实例调用一个不存在的方法时,执行该__call()方法。注意需要提前在类里
 
声明:
 
function __call($fname,$argus)
 
{
 
echo “你调用的方法:”.$fname.”不存在
”;
 
echo “参数是”.print_r($argus);
 
}
 
声明时包含两个参数,第一个参数是string型,是调用的不存在的方法的方法名($fname),第二个参数是
 
array型,是调用的不存在的方法的参数($argus)。
 
__autoload()
 
我们在平时调用一个类的时候,必须要先将该类所在的文件引入(include “xxx.php”),如果我们在一个页里调用的类很多,那么我们不得不使用许多的include “xxx.php”。显然这样很麻烦。
 
__autoload()方法可以帮我们解决这个问题。
 
比如我们将上面的那个Person类所在的文件定义为Person_class.php  ,
 
再新建一个php文件  test.php,编辑内容:
 
function  __autoload($calssName)
 
{
 
include $className.”_class.php”;  //看到这也许你就明白了吧?哈哈
 
}
 
$p = new Person(“mifan”, 22);
 
$p->say();
 
这样执行该test.php页面就不会出现错误了。
 
__autoload()方法是在生命不存在的类时调用的方法,它有一个string类型的参数是声明该不存在类的类名。
 
当然,类文件的命名也是很有讲究的。最好是和类有关系,比如Person_class.php
 
 

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to recover deleted contacts on WeChat (simple tutorial tells you how to recover deleted contacts) How to recover deleted contacts on WeChat (simple tutorial tells you how to recover deleted contacts) May 01, 2024 pm 12:01 PM

Unfortunately, people often delete certain contacts accidentally for some reasons. WeChat is a widely used social software. To help users solve this problem, this article will introduce how to retrieve deleted contacts in a simple way. 1. Understand the WeChat contact deletion mechanism. This provides us with the possibility to retrieve deleted contacts. The contact deletion mechanism in WeChat removes them from the address book, but does not delete them completely. 2. Use WeChat’s built-in “Contact Book Recovery” function. WeChat provides “Contact Book Recovery” to save time and energy. Users can quickly retrieve previously deleted contacts through this function. 3. Enter the WeChat settings page and click the lower right corner, open the WeChat application "Me" and click the settings icon in the upper right corner to enter the settings page.

The secret of hatching mobile dragon eggs is revealed (step by step to teach you how to successfully hatch mobile dragon eggs) The secret of hatching mobile dragon eggs is revealed (step by step to teach you how to successfully hatch mobile dragon eggs) May 04, 2024 pm 06:01 PM

Mobile games have become an integral part of people's lives with the development of technology. It has attracted the attention of many players with its cute dragon egg image and interesting hatching process, and one of the games that has attracted much attention is the mobile version of Dragon Egg. To help players better cultivate and grow their own dragons in the game, this article will introduce to you how to hatch dragon eggs in the mobile version. 1. Choose the appropriate type of dragon egg. Players need to carefully choose the type of dragon egg that they like and suit themselves, based on the different types of dragon egg attributes and abilities provided in the game. 2. Upgrade the level of the incubation machine. Players need to improve the level of the incubation machine by completing tasks and collecting props. The level of the incubation machine determines the hatching speed and hatching success rate. 3. Collect the resources required for hatching. Players need to be in the game

How to set font size on mobile phone (easily adjust font size on mobile phone) How to set font size on mobile phone (easily adjust font size on mobile phone) May 07, 2024 pm 03:34 PM

Setting font size has become an important personalization requirement as mobile phones become an important tool in people's daily lives. In order to meet the needs of different users, this article will introduce how to improve the mobile phone use experience and adjust the font size of the mobile phone through simple operations. Why do you need to adjust the font size of your mobile phone - Adjusting the font size can make the text clearer and easier to read - Suitable for the reading needs of users of different ages - Convenient for users with poor vision to use the font size setting function of the mobile phone system - How to enter the system settings interface - In Find and enter the "Display" option in the settings interface - find the "Font Size" option and adjust it. Adjust the font size with a third-party application - download and install an application that supports font size adjustment - open the application and enter the relevant settings interface - according to the individual

Tips for dynamically creating new functions in golang functions Tips for dynamically creating new functions in golang functions Apr 25, 2024 pm 02:39 PM

Go language provides two dynamic function creation technologies: closure and reflection. closures allow access to variables within the closure scope, and reflection can create new functions using the FuncOf function. These technologies are useful in customizing HTTP routers, implementing highly customizable systems, and building pluggable components.

Considerations for parameter order in C++ function naming Considerations for parameter order in C++ function naming Apr 24, 2024 pm 04:21 PM

In C++ function naming, it is crucial to consider parameter order to improve readability, reduce errors, and facilitate refactoring. Common parameter order conventions include: action-object, object-action, semantic meaning, and standard library compliance. The optimal order depends on the purpose of the function, parameter types, potential confusion, and language conventions.

How to choose a mobile phone screen protector to protect your mobile phone screen (several key points and tips for purchasing mobile phone screen protectors) How to choose a mobile phone screen protector to protect your mobile phone screen (several key points and tips for purchasing mobile phone screen protectors) May 07, 2024 pm 05:55 PM

Mobile phone film has become one of the indispensable accessories with the popularity of smartphones. To extend its service life, choose a suitable mobile phone film to protect the mobile phone screen. To help readers choose the most suitable mobile phone film for themselves, this article will introduce several key points and techniques for purchasing mobile phone film. Understand the materials and types of mobile phone films: PET film, TPU, etc. Mobile phone films are made of a variety of materials, including tempered glass. PET film is relatively soft, tempered glass film has good scratch resistance, and TPU has good shock-proof performance. It can be decided based on personal preference and needs when choosing. Consider the degree of screen protection. Different types of mobile phone films have different degrees of screen protection. PET film mainly plays an anti-scratch role, while tempered glass film has better drop resistance. You can choose to have better

How to write efficient and maintainable functions in Java? How to write efficient and maintainable functions in Java? Apr 24, 2024 am 11:33 AM

The key to writing efficient and maintainable Java functions is: keep it simple. Use meaningful naming. Handle special situations. Use appropriate visibility.

How to convert MySQL query result array to object? How to convert MySQL query result array to object? Apr 29, 2024 pm 01:09 PM

Here's how to convert a MySQL query result array into an object: Create an empty object array. Loop through the resulting array and create a new object for each row. Use a foreach loop to assign the key-value pairs of each row to the corresponding properties of the new object. Adds a new object to the object array. Close the database connection.

See all articles