Home Backend Development PHP Tutorial PHP reference & detailed explanation_PHP tutorial

PHP reference & detailed explanation_PHP tutorial

Jul 13, 2016 pm 04:59 PM
amp php no function exist Quote usually have of Simple Detailed explanation transfer return

A simple ampersand in PHP can lead to a large article. Today we will briefly talk about the usage of variable references and parameter value transfer in PHP. I hope beginners will read and refer to this article.

What $a=test(); gets in this way is not actually a function reference return. It is no different from an ordinary function call. As for the reason: This is the regulation of PHP
PHP stipulates that what is obtained through $a=&test(); is the reference return of the function
As for what is a reference return (the PHP manual says: Reference return is used when you want to use a function to find which variable the reference should be bound to.) This nonsense made me unable to understand it for a long time

Using the above example to explain it is
Calling a function using $a=test() only assigns the value of the function to $a, and any changes to $a will not affect $b
in the function. When calling a function through $a=&test(), its function is to point the memory address of the $b variable in return $b and the memory address of the $a variable to the same place
That is to say, the effect equivalent to this is produced ($a=&b;), so changing the value of $a also changes the value of $b, so after executing

The code is as follows Copy code
$a=&test();
 代码如下 复制代码
$a=&test();
$a=5;
$a=5;

Afterwards, the value of $b becomes 5

Static variables are used here to let everyone understand the reference return of functions. In fact, the reference return of functions is mostly used in objects

Object reference


The above code is the effect of running in PHP5
In PHP5, object copying is achieved through references. In the above column, $b=new a; $c=$b; is actually equivalent to $b=new a; $c=&$b;

The default in PHP5 is to call objects by reference, but sometimes you may want to create a copy of the object and hope that changes to the original object will not affect the copy. For this purpose, PHP defines a special method called __clone .


The role of quotation

If the program is relatively large, there are many variables referencing the same object, and you want to clear it manually after using the object, I personally recommend using the "&" method, and then using $var=null to clear it. Otherwise, use the default of php5 Method. In addition, for transferring large arrays in php5, it is recommended to use the "&" method, after all, it saves memory space.


Unquote

When you unset a reference, you just break the binding between the variable name and the variable's contents. This does not mean that the variable contents are destroyed. For example:
 代码如下 复制代码

$a = 1;
$b =& $a;
unset ($a);
?> 

The code is as follows Copy code

$a = 1;

$b =& $a;
unset ($a);

?>

 代码如下 复制代码

$var =& $GLOBALS["var"];
?> 

Won’t unset $b, just $a. global quote When you declare a variable with global $var you actually create a reference to the global variable. That is the same as doing this:
The code is as follows Copy code
$var =& $GLOBALS["var"];<🎜> ?>

This means that, for example, unset $var will not unset a global variable.

$this
In an object method, $this is always a reference to the object that calls it.

//Another little interlude below
The address pointing (similar to a pointer) function in PHP is not implemented by the user himself, but is implemented by the Zend core. The reference in PHP adopts the principle of "copy-on-write", which means that unless a write operation occurs, it points to the same address. Variables or objects will not be copied.

In layman terms
1: If there is the following code

In fact, at this time, $a and $b both point to the same memory address, rather than $a and $b occupying different memories

Output result: 122, you know, these two variables are one "person" from now on, don't bully them!
The code is as follows
 代码如下 复制代码

$source="110";
$a=$source;
$b=&$source;
$source="120";
echo $a."rn",$b;
Copy code

$source="110";

$a=$source;

$b=&$source;

$source="120";

echo $a."rn",$b;

This is a problem with PHP’s reference operator &. Because & is applied to variable $b when assigning value, $b does not copy “110” to itself but directly points to the nest of $source. From now on, $ The source is his $b. No matter how $source changes, it will lead to changes in $b - much like the relationship between a host and two monitors. Since this is the relationship, changes in $b will of course lead to changes in $source
 代码如下 复制代码

class MysqlConnect{} //用来创建数据库连接,那么我们每次调用的时候可以这样写
 
$conn=& new MysqlConnect();

This is a problem with PHP’s reference operator &. Because & is applied to variable $b when assigning value, $b does not copy “110” to itself but directly points to the nest of $source. From now on, $ The source is his $b. No matter how $source changes, it will lead to changes in $b - much like the relationship between a host and two monitors. Since this is the relationship, changes in $b will of course lead to changes in $source

In fact, for the sake of program readability and subsequent programming misoperations, I do not recommend using the & reference operator, think about it. Before row 10,000, you used $b=&$source; and you may not remember it after row 10,000. If you accidentally assign the wrong value, it will be enough for you to drink when debugging! Haha...

In fact, this operator is more used in database connections, because when we create a database connection object, we often only need one, and too many are useless.

The code is as follows Copy code
class MysqlConnect{} //Used to create a database connection, then we can write like this every time we call $conn=& new MysqlConnect(); This way of writing can ensure that the database connection will not be created repeatedly, consuming system resources. But if you really need multiple different connections, you must not write it like this.
http://www.bkjia.com/PHPjc/631318.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631318.htmlTechArticleWhat is simply obtained in php is not actually a function reference return, which is no different from an ordinary function call. Reason: This is a requirement of PHP. PHP requires $a=test();...
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 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)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles