Table of Contents
魔术函数
魔术常量
Home php教程 php手册 PHP的魔术函数与魔术常量介绍

PHP的魔术函数与魔术常量介绍

Jun 13, 2016 am 09:38 AM
php magic

魔术函数

  1. __construct()
  2. 实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。

  3. __destruct()
  4. 当删除一个对象或对象操作终止时被调用。

  5. __call()
  6. 对象调用某个方法, 若方法存在,则直接调用; 若不存在,则会去调用__call函数。

  7. __get()
  8. 读取一个对象的属性时, 若属性存在,则直接返回属性值; 若不存在,则会调用__get函数。

  9. __set()
  10. 设置一个对象的属性时, 若属性存在,则直接赋值; 若不存在,则会调用__set函数。

  11. __toString()
  12. 打印一个对象的时被调用。如echo $obj;或print $obj;

  13. __clone()
  14. 克隆对象时被调用。如:$t=new Test();$t1=clone $t;

  15. __sleep()
  16. serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。

  17. __wakeup()
  18. unserialize时被调用,做些对象的初始化工作。

  19. __isset()
  20. 检测一个对象的属性是否存在时被调用。如:isset($c->name)。

  21. __unset()
  22. unset一个对象的属性时被调用。如:unset($c->name)。

  23. __set_state()
  24. 调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。

  25. __autoload()
  26. 实例化一个对象时,如果对应的类不存在,则该方法被调用。

魔术常量

  1. __LINE__
  2. 返回文件中的当前行号。

  3. __FILE__
  4. 返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。

  5. __FUNCTION__
  6. 返回函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

  7. __CLASS__
  8. 返回类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

  9. __METHOD__
  10. 返回类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

初识魔术方法

Php5.0发布以来为我们提供了很多面向对象的特性,尤其是为我们提供了好多易用的魔术方法,这些魔术方法可以让我们简化我们的编码,更好的设计我们的系统。今天我们就来认识下php5.0给我们提供的魔术方法。

__get() 当试图读取一个并不存在的属性的时候被调用。

如果试图读取一个对象并不存在的属性的时候,PHP就会给出错误信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中反射的各种操作。

class Test
{
public function __get($key)
{
  echo $key . " 不存在";
}
}
$t = new Test();
echo $t->name;
Copy after login

就会输出: name 不存在

__set() 当试图向一个并不存在的属性写入值的时候被调用。

class Test
{
public function __set($key,$value)
{
  echo '对'.$key . "附值".$value;
}
}
$t = new Test();
$t->name = "aninggo";
Copy after login

就会输出: 对 name 附值 aninggo

__call() 当试图调用一个对象并不存在的方法时,调用该方法。

class Test
{
public function __call($Key, $Args)
{
  echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true);
}
}
$t = new Test();
$t->getName(aning,go);
Copy after login

程序将会输出: 您要调用的 getName 方法不存在。

参数是:

Array
(
[0] => aning
[1] => go
)
Copy after login

__toString() 当打印一个对象的时候被调用

这个方法类似于java的toString方法,当我们直接打印对象的时候回调用这个函数

class Test
{
public function __toString()
{
  return "打印 Test";
}
}
$t = new Test();
echo $t;
Copy after login

运行echo $t;的时候,就会调用$t->__toString();从而输出 :打印 Test

__clone() 当对象被克隆时,被调用

class Test
{
public function __clone()
{
  echo "我被复制了!";
}
}
$t = new Test();
$t1 = clone $t;
Copy after login

程序输出: 我被复制了

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

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 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)

Hot Topics

Java Tutorial
1670
14
PHP Tutorial
1274
29
C# Tutorial
1256
24
PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP vs. Python: Understanding the Differences PHP vs. Python: Understanding the Differences Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP in Action: Real-World Examples and Applications PHP in Action: Real-World Examples and Applications Apr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

The Enduring Relevance of PHP: Is It Still Alive? The Enduring Relevance of PHP: Is It Still Alive? Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

PHP vs. Other Languages: A Comparison PHP vs. Other Languages: A Comparison Apr 13, 2025 am 12:19 AM

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

See all articles