Home > Backend Development > PHP Tutorial > A brief discussion on static variables in PHP_PHP tutorial

A brief discussion on static variables in PHP_PHP tutorial

WBOY
Release: 2016-07-13 10:33:45
Original
904 people have browsed it

Static variables only exist within the function scope, that is to say, static variables only live on the stack. Generally, variables within functions will be released after the function ends, such as local variables, but static variables will not. That is to say, the value of the variable will be retained the next time this function is called.

As long as you add the keyword static before a variable, the variable becomes a static variable.

    
<?php
	function test()
	{
		static $nm = 1;
		$nm = $nm * 2;
		print $nm."<br />";
	}
	
    // 第一次执行,$nm = 2
	test();
    // 第一次执行,$nm = 4
	test();
    // 第一次执行,$nm = 8
	test();
?>
Copy after login

Program execution result:

2
4
8
Copy after login

After the function test() is executed, the value of the variable $nm is saved.

Static attributes are often used in classes, such as static members and static methods.

Program List: Static members of the class

Static variable $nm belongs to class bkjia, not to an instance of the class. This variable is valid for all instances.

:: is the scope qualification operator. The self scope is used here instead of the $this scope. The $this scope only represents the current instance of the class, and self:: represents the class itself.

    
<?php
	class bkjia 
	{
		public static $nm = 1;
		
		function nmMethod() 
		{
			self::$nm += 2;
			echo self::$nm . '<br />';
		}
	}
	
	$nmInstance1 = new bkjia();
	$nmInstance1 -> nmMethod();
	
	$nmInstance2 = new bkjia();
	$nmInstance2 -> nmMethod();
?> 
Copy after login

Program execution result:

3
5
Copy after login

Program List: Static properties

    
<?php
	class NowaMagic
	{
    	public static $nm = 'www.bkjia.com';
    	public function nmMethod() 
		{
        	return self::$nm;
    	}
	}
	
	class Article extends NowaMagic
	{
    	public function articleMethod() 
		{
        	return parent::$nm;
    	}
	}
	
	// 通过作用于限定操作符访问静态变量
	print NowaMagic::$nm . "<br />";
	
	// 调用类的方法
	$bkjia = new NowaMagic();
	print $bkjia->nmMethod() . "<br />";
	
	print Article::$nm . "<br />";
	
	$nmArticle = new Article();
	print $nmArticle->nmMethod() . "<br />";
?>
Copy after login

Program execution result:

www.bkjia.com
www.bkjia.com
www.bkjia.com
www.bkjia.com
Copy after login

Program List: Simple static constructor

PHP does not have a static constructor. You may need to initialize a static class. There is a very simple method. Call the Demonstration() method of the class directly after the class definition.

    
<?php
function Demonstration()
{
    return 'This is the result of demonstration()';
}
class MyStaticClass
{
    //public static $MyStaticVar = Demonstration(); //!!! FAILS: syntax error
    public static $MyStaticVar = null;
    public static function MyStaticInit()
    {
        //this is the static constructor
        //because in a function, everything is allowed, including initializing using other functions
        
        self::$MyStaticVar = Demonstration();
    }
} MyStaticClass::MyStaticInit(); //Call the static constructor
echo MyStaticClass::$MyStaticVar;
//This is the result of demonstration()
?>
Copy after login

Program execution result:

This is the result of demonstration()
Copy after login

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/752409.htmlTechArticleStatic variables only exist within the function scope, that is to say, static variables only live on the stack. Generally, variables within a function will be released after the function ends, such as local variables, but static variables...
Related labels:
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template