Zi 字媒體
2017-07-25T20:27:27+00:00
PHP中的static與Java中的static不太一樣,PHP中的static是用來保留變數的值
例如
function test() {
static $count = 0;
return $count++;
}
print test();
print test();
print test();
上面的範例,每次呼叫test()函式時,count變數會持續累加(可以應用在遞迴上面)
另外在物件的應用上,最典型的就是Singleton pattern(static將instance保留)
class TEST {
private static $_instance = null;
private static $_count = 0;
private function __construct(){
self::$_count++;
}
public static function getInstance() {
if( self::$_instance === null ){
self::$_instance = new self();
}
return self::$_instance;
}
public function getCount() {
return self::$_count;
}
}
//同一個instance
$test = TEST::getInstance();
print $test -> getCount(); // print 1
$test2 = TEST::getInstance();
print $test2 -> getCount();// print 1
最後還有一點要注意,使用static::呼叫和用self::呼叫是不同的
如果在有繼承方法的狀況下,self::是呼叫父類別,而static::才是呼叫本身
範例
class A {
public static function getSelf() {
return new self();
}
public static function getStatic() {
return new static();
}
}
class B extends A {}
class C extends B {}
echo get_class(B::getSelf()); // A
echo get_class(C::getSelf()); // A
echo get_class(C::getStatic()); // C
echo get_class(B::getStatic()); // B
echo get_class(A::getStatic()); // A
Categories: PHP
分類
Android
AngularJS
API Blueprint
Chrome
Database
MySQL
DataStructure
Docker
Editor
Vim
Firefox
Git
GitLab
Google API
Hadoop
Language
Go
Java
JavaScript
jQuery
jQueryChart
Node.js
Vue
PHP
Laravel
ZendFramework
Python
Mac
Network
Cisco
DLink
Juniper
Oauth
Server
Apache
Share
Unix
FreeBSD
Linux
WebDesign
Bootstrap
CSS
HTML
Wordpress
Search
搜尋關鍵字:
寫了
5860316篇文章,獲得
23313次喜歡