The following editor will bring you a brief analysis of the usage differences between php static methods and non-static methods. The editor thinks it’s pretty good, so I’ll share it with you now and give it as a reference. Let’s follow the editor and take a look.
In PHP programming, thestatic keyworddeclares aattributeor method that is related to the class, not to the class Relevant to a specific instance, therefore, such attributes or methods are also called "class attributes" or "class methods"
Ifaccess controlpermissions allow, you do not need to create this classObjectAnd directly use the class name plus two colons "::" to call.
The static keyword can be used to modify variables and methods.
You can directly access the static attributes and static methods in the class without instantiation.
static'sproperties and methodscan only access static properties and methods, but cannot access non-static properties and methods. Because when static properties and methods are created, there may not yet be any instances of this class that can be called.
static properties have only one copy in memory and are shared by all instances.
Use the self:: keyword to access static members of the current class.
All instances of a class share static properties in the class.
That is, even if there are multiple instances in the memory, there is only one copy of the static attributes.
Example, set a counter $count attribute, set private and static modifications.
In this way, the outside world cannot directly access the $count attribute. The result of running the program also shows that multiple instances are using the same static $count attribute.
getcount() . " user"; echo "
"; unset($user3); echo "now here have " . $user1->getcount() . " user"; ?>
Second, static properties are called directly
Static properties can be used directly without instantiation, and can be used directly before the class is created.
Usage:
Class name:: Static property name
"; echo math::$pi * $r * $r; echo "
"; //这里我觉得 3.14 不够精确,我把它设置的更精确。 math::$pi = 3.141592653589793; echo "半径是 $r 的面积是
"; echo math::$pi * $r * $r; ?>
The class is not created, and the static properties can be used directly. When are static properties created in memory?
I didn’t see any relevant information in php.
Quoting concepts in java to explain should also be universal. Static properties and methods are created when the class is called.
3. Static methods
Static methods can be used directly without the class being instantiated.
The method used is class name::static method name
Continue to write this math class for mathematical calculations.
Design a method to calculate the maximum value. Since it is a mathematical operation, there is no need to instantiate this class. It would be much more convenient if this method can be taken over and used.
This is a class designed just to demonstrate the static method. PHP provides the max() function to compare numerical values.
$num2 ? $num1 : $num2; } } $a = 99; $b = 88; echo "显示 $a 和 $b 中的最大值是"; echo "
"; echo math::max($a, $b); echo "
"; echo "
"; echo "
"; $a = 99; $b = 100; echo "显示 $a 和 $b 中的最大值是"; echo "
"; echo math::max($a,$b); ?>
How static methods call static methods
The first example, when a static method calls other static methods, use self::
$num2 ? $num1 : $num2; } public static function max3($num1, $num2, $num3) { $num1 = self::max($num1, $num2); $num2 = self::max($num2, $num3); $num1 = self::max($num1, $num2); return $num1; } } $a = 99; $b = 77; $c = 88; echo "显示 $a $b $c 中的最大值是"; echo "
"; echo math::max3($a, $b, $c); ?>
Static methods call static properties
Use self:: to call the static properties of this class.
Static methods cannot call non-static properties. Non-static properties cannot be called using self::.
You cannot also use $this to obtain the value of non-static properties.
Static methods call non-static methods
In PHP5, the $this identifier cannot be used in static methods to call non-static methods.
"; return $num1 > $num2 ? $num1 : $num2; } public static function max3($num1, $num2, $num3) { $num1 = $this->max($num1, $num2); $num2 = $this->max($num2, $num3); $num1 = $this->max($num1, $num2); return $num1; } } $a = 99; $b = 77; $c = 188; echo "显示 $a $b $c 中的最大值是"; echo "
"; echo math::max3($a, $b, $c); //同样的这个会报错 ?>
When a non-static method in a class is called by self::, the system will automatically convert this method into a static method.
$num2 ? $num1 : $num2; } public static function max3($num1, $num2, $num3) { $num1 = self::max($num1, $num2); $num2 = self::max($num2, $num3); $num1 = self::max($num1, $num2); return $num1; } } $a = 99; $b = 77; $c = 188; echo "显示 $a $b $c 中的最大值是"; echo "
"; echo math::max3($a, $b, $c); ?>
The above is the detailed content of The difference in usage between php static methods and non-static methods. For more information, please follow other related articles on the PHP Chinese website!