Home > Article > Backend Development > The difference between the usage of static static classes and static static variables in php_PHP tutorial
Static is to define a static object or static variable. We will know the characteristics of the variables or class methods defined by static after reading the relevant examples in this article.
1. Create the object $object = new Class(), and then use "->" to call: $object->attribute/function, provided that the variable/method is accessible.
2. Directly call class methods/variables: class::attribute/function, whether static or non-static. But there are prerequisites:
A. If it is a variable, the variable needs to be accessible.
B. If it is a method, in addition to the method being accessible, it also needs to meet:
b1) If it is a static method, there are no special conditions;
b2) If it is a non-static method, it needs to be changed if it is not used in the method. $this means that non-static variables/methods are not called. Of course, there is no problem with calling static variables/methods.
Then let’s take a look at the difference between using $object->… and using class::…:
1. When using $object->…, you need to execute the constructor to create the object;
2. Use class::... to call static methods/variables, without executing the constructor to create objects;
3. Use class::... to call non-static methods/variables, and there is no need to execute the constructor to create objects.
Then the strange thing comes out. Since 2 and 3 are the same, what is the point of the existence of static methods/variables?
static static
Declaring a class member or method as static allows direct access without instantiating the class. Static members (except static methods) cannot be accessed through an object. Static members belong to the class and do not belong to any object instance, but object instances of the class can be shared.
Example:
The code is as follows | Copy code | ||||||||||||
public static $country = "China";
} }
"; // Output: China$p1 = new Person();//echo $p1->country; // Wrong writing // Access static member method Person::myCountry(); // Output: I am Chinese// Static methods can also be accessed through objects: $p1->myCountry();// Output member attribute values in subclasses echo Student::$country."< ;br />"; // Output: China$t1 = new Student();$t1->study(); // Output: I am Chinese?> |
The code is as follows td> | Copy code | slef:: $country slef:: myCountry() |
The code is as follows | Copy code |
parent:: $countryparent:: myCountry() |
External access to static member attributes and methods is class name/subclass name::, such as:
代码如下 | 复制代码 |
Person::$country Person::myCountry() Student::$country |
But static methods can also be accessed through ordinary objects.
Example of declaring static variables
The code is as follows
|
Copy code
|
|||||||||||||
static $int = 1+2; // wrong (as it is an expression) $int++; echo $int;
?> Example of using static variables
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 Previous article:PHP iframe implements refresh-free file upload (no ajax required)_PHP tutorialNext article:PHP iframe implements refresh-free file upload (no ajax required)_PHP tutorial Related articlesSee more |