This article illustrates several common considerations for using static methods in PHP. Share to everyone for your reference. The specific methods are as follows:
1. even if the method in the class is not declared with static, but it is not used to the variable class member variables, the operator can still be used externally:: To invoke ;
2. The value of the $this in a method invoked in a static manner (by:: operator) is determined by the context in which it is invoked! Not the class that defines him !!
For example, the following code:
<?php
class TestClass1
{public
$normal _v = ' normal_v from TestClass1 ';
public static $STATIC _v = ' static_v from TestClass1 ';
Public Function test_func1 ()
{
echo $this->normal_v. ' <br/> '. Self:: $STATIC _v;
}
}
Class TestClass2
{public
$normal _v = ' normal_v from TestClass2 ';
public static $STATIC _v = ' static_v from TestClass2 ';
Public Function Test_func2 ()
{
testclass1::test_func1 ();
}
}
$t 2 = new TestClass2 ();
$t 2->test_func2 ();
This code is what the output will be, I thought it would be normal_v from TestClass1 <br/> Static_v from TestClass1, the test found that I was wrong, the correct output is:
Normal_v from TestClass2
Static_v from TestClass1
Description: Test_func1 () Although it is defined in the TestClass1, but is called in the TestClass2, its internal $this variable is determined by the TESTCLASS2!
In fact, the relationship between these two classes should belong to "bidirectional association".
Interested friends can test run this example, I believe there will be a new harvest!