search
HomeBackend DevelopmentPHP TutorialSummary of common magic methods in php, summary of php magic_PHP tutorial

A summary of common magic methods in php, a summary of php magic

This article organizes and summarizes the common magic methods in php in detail, and shares it with everyone for your reference. The specific content is as follows

1. PHP treats all methods starting with "__" as magic methods, so any custom methods cannot start with "__"
Overloading provided by PHP refers to dynamically creating attributes or methods. Overloading is achieved through magic methods. The parameters of these magic methods cannot be passed. __get(), __set(), __isset(), __unset() implements class attribute overloading.
2. When accessing an inaccessible attribute in a class, the __get() method will be called
3. When accessing inaccessible attributes in a class, __get(), __set(), __isset(), __unset() will be called according to different situations. When accessing attributes, use the function isset() or empty() When the unset() function is used, the __isset() method will be called.
4. These four methods cannot be defined using the static keyword. After php5.3.0, a warning level warning will occur when these four methods are defined using the static method.
5. What are inaccessible attributes: (1) attributes that are not in the class, (2) private variables are accessed outside the class. Method overloading is implemented through __call() and __callstatic(). The difference between the two is whether a context is a static method. The latter will be called when an inaccessible static method is called. __callstatic() was added in php5.3.0.
6. __sleep() and __wakeup()
When serialize() is serializing, it will first check whether the __sleep() function exists. If it exists, it will first call __sleep() and return an array containing all variable names. If the method does not return anything, null will be serialized. ization and generate a notice-level error.
The __wakeup() method is the opposite of __sleep() and is called when unserialize() is called
7. __toString(), let a class decide how to convert it into a string. Before php5.2.0, this method can only be effective in combination with the echo or print method. After php5.2.0, it can be combined with printf() modification, but when modifying Non-character modifiers such as %d cannot be used.
8. __invoke(), when trying to call an object by calling a function, this function will be triggered. It only takes effect after php5.3.
9. __set_state() static method. This static method will only be called when var_export() is called. It will take effect after php5.1.0. The only parameter is to receive an array.
10. __construct() and __destruct(), constructor and destructor. The constructor is mainly used for class initialization. The destructor runs after all references to an object are deleted or when the object is explicitly destroyed. Exceptions are not allowed to be thrown in the destructor, otherwise a fatal error will be triggered. The destructor is called at the end of the script, when all http headers have been sent.
11. __clone(), object copy, this method cannot be called directly, it must be called explicitly through the clone keyword

Code:

//实例化对象时,会调用对象的__construct方法
$obj = new Object();
//给对象不存在的属性赋值时,会调用对象的__set方法
$obj->title = "hello";
//使用对象不存在的属性时,会调用对象的__get方法
echo $obj->title;
//调用对象不存在的方法时,会调用对象的__call方法
$obj->test("hello",123,567);
//调用不存在的类静态方法时,会调用类的__callStatic方法
Object::staticMethod("static","not found method");
//直接输出对象时,会调用对象的__toString方法
echo $obj;
//将一个对象当作函数一样使用时,会调用对象的__invoke方法
echo $obj("test");
//克隆对象时,会调用对象的__clone方法
$obj2 = clone $obj;
//判断对象属性是否存在时,会调用对象的__isset方法
var_dump(isset($obj->aaa));
//销毁对象属性时,会调用对象的__unset方法
unset($obj->aaa);
 
 
class Object{
 
  protected $array = array();
 
  function __construct()
  {
    echo __METHOD__."你正在实例化对象<br>";
  }
 
  function __set($name, $value)
  {
    $this->array[$name]=$value;
  }
 
  function __get($name)
  {
    return $this->array[$name];
  }
 
  function __call($name, $arguments)
  {
    var_dump($name,$arguments);
    return "magic function\n";
  }
 
  static function __callStatic($name, $arguments)
  {
    var_dump($name,$arguments);
    return "magic static function";
  }
 
  function __toString()
  {
    return __CLASS__.'<br>';
  }
 
  function __invoke($arguments)
  {
    var_dump($arguments);
    return __METHOD__.'<br>';
  }
 
  function __clone()
  {
    echo __METHOD__."你正在克隆对象<br>";
  }
 
  function __isset($name)
  {
    echo __METHOD__."你想判断有没有属性".$name."<br>";
    return 1;
  }
 
  function __unset($name)
  {
    echo __METHOD__."你想删除属性".$name."<br>";
  }
 
 
  function __destruct()
  {
    echo __METHOD__."你正在注销对象<br>";
  }
 
 
 
}

The above is all about the common magic methods in php. I hope it will be helpful to everyone's learning.

Articles you may be interested in:

  • Instructions for using php magic methods
  • Detailed explanation of the use of php magic methods __get() and __set()
  • Detailed explanation based on PHP5 magic constants and magic methods
  • In-depth detailed explanation of magic methods in PHP5
  • Summary of common magic methods in php
  • Magic methods in PHP classes ( Magic Method) A concise summary
  • Examples of use of PHP magic methods __GET and __SET
  • Examples of use of PHP magic methods __ISSET and __UNSET
  • Detailed explanation of common PHP magic methods

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1099054.htmlTechArticleA summary of common magic methods in php. This article on php magic summary details the common magic methods in php. I have organized and summarized it and shared it with everyone for your reference. The specific content is as follows 1....
Statement
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
What are some common problems that can cause PHP sessions to fail?What are some common problems that can cause PHP sessions to fail?Apr 25, 2025 am 12:16 AM

Reasons for PHPSession failure include configuration errors, cookie issues, and session expiration. 1. Configuration error: Check and set the correct session.save_path. 2.Cookie problem: Make sure the cookie is set correctly. 3.Session expires: Adjust session.gc_maxlifetime value to extend session time.

How do you debug session-related issues in PHP?How do you debug session-related issues in PHP?Apr 25, 2025 am 12:12 AM

Methods to debug session problems in PHP include: 1. Check whether the session is started correctly; 2. Verify the delivery of the session ID; 3. Check the storage and reading of session data; 4. Check the server configuration. By outputting session ID and data, viewing session file content, etc., you can effectively diagnose and solve session-related problems.

What happens if session_start() is called multiple times?What happens if session_start() is called multiple times?Apr 25, 2025 am 12:06 AM

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

How do you configure the session lifetime in PHP?How do you configure the session lifetime in PHP?Apr 25, 2025 am 12:05 AM

Configuring the session lifecycle in PHP can be achieved by setting session.gc_maxlifetime and session.cookie_lifetime. 1) session.gc_maxlifetime controls the survival time of server-side session data, 2) session.cookie_lifetime controls the life cycle of client cookies. When set to 0, the cookie expires when the browser is closed.

What are the advantages of using a database to store sessions?What are the advantages of using a database to store sessions?Apr 24, 2025 am 12:16 AM

The main advantages of using database storage sessions include persistence, scalability, and security. 1. Persistence: Even if the server restarts, the session data can remain unchanged. 2. Scalability: Applicable to distributed systems, ensuring that session data is synchronized between multiple servers. 3. Security: The database provides encrypted storage to protect sensitive information.

How do you implement custom session handling in PHP?How do you implement custom session handling in PHP?Apr 24, 2025 am 12:16 AM

Implementing custom session processing in PHP can be done by implementing the SessionHandlerInterface interface. The specific steps include: 1) Creating a class that implements SessionHandlerInterface, such as CustomSessionHandler; 2) Rewriting methods in the interface (such as open, close, read, write, destroy, gc) to define the life cycle and storage method of session data; 3) Register a custom session processor in a PHP script and start the session. This allows data to be stored in media such as MySQL and Redis to improve performance, security and scalability.

What is a session ID?What is a session ID?Apr 24, 2025 am 12:13 AM

SessionID is a mechanism used in web applications to track user session status. 1. It is a randomly generated string used to maintain user's identity information during multiple interactions between the user and the server. 2. The server generates and sends it to the client through cookies or URL parameters to help identify and associate these requests in multiple requests of the user. 3. Generation usually uses random algorithms to ensure uniqueness and unpredictability. 4. In actual development, in-memory databases such as Redis can be used to store session data to improve performance and security.

How do you handle sessions in a stateless environment (e.g., API)?How do you handle sessions in a stateless environment (e.g., API)?Apr 24, 2025 am 12:12 AM

Managing sessions in stateless environments such as APIs can be achieved by using JWT or cookies. 1. JWT is suitable for statelessness and scalability, but it is large in size when it comes to big data. 2.Cookies are more traditional and easy to implement, but they need to be configured with caution to ensure security.

See all articles

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 Tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment