PHP使用靜態方法的幾個注意事項

2022-10-06 11:45:12 字數 625 閱讀 9255

1. 即使類中的方法並未用static宣告,但其未使用到可改變的類成員變數,在外部仍可用操作符::來呼叫;

2. 以靜態方式(用::操作符)呼叫的方法中$this的取值是由呼叫時的上下文決定的!而不是定義他的類!!

例如以下的**:

<?php class testclass1 }

class testclass2 }

$t2 = new testclass2();

$t2->teswww.cppcns.comt_func2();

這段**是輸出會是什麼呢,我原以為會是normal_v from testclass1

static_v from testclass1,測試發現其實我錯了,正確的輸出是:

normal_v from testclass2

s from testclass1

說明:test_func1()雖然是在testclass1中定義的,但卻是在testclass2中呼叫的,其內部的$this變數則是由testclass2決定的!

其實這兩個類的關係應該屬於"雙向關聯".

感興趣的朋友可以測試執行本文例項,相信會有新的收穫!

本文標題: php使用靜態方法的幾個注意事項

本文位址:

PHP靜態方法的幾個注意事項

1.即使類中的方法並未用static宣告,但其未使用到可改變的類成員變數,在外部仍可用操作符 來呼叫 2.以靜態方式 用 操作符 呼叫的方法中 this的取值是由呼叫時的上下文決定的 而不是定義他的類 例如以下的 這段 是輸出會是什麼呢,我原以為會是normal v from testclass1 ...

php與memcached配合使用注意事項

1.memcached啟動的時候,如果指定了ip,則建立鏈結的時候socket會繫結到這個連線上。例如 home admin memcached bin memcached d m 5000 i 192.168.1.1 則socket繫結到了192.168.1.1上去,如果在php中鏈結的時候 通過...

String的splic方法使用的注意事項

今天在專案中遇到了乙個平時不注意的問題,測的時候發現的,string value canonical 00000000000000000000000000000028 canonical 0 0 yes no yes yes string arr value.split 我本以為得到的arr陣列長度...