在閱讀《深入php物件導向、模式與實踐》一書中的第4.5章節過程中,遇到了「呼叫上下文」、「解析上下文」兩個術語,自己想了半天,還是未能想通順,於是還是查閱了相關資料,一般情況下,這個時候囫圇吞棗的過去,以後遇到問題還是不會被解決。
參考:事例1
<?php
classa}
class
bextends
a
執行結果:b value
由該段**可以知道,首先定義了乙個a類,然後定義了乙個繼承自a類的b類,兩個類中都定義了$value,這個時候去例項化b類,並執行繼承了a類中的printvalue()方法,結果列印出「b value」。類a中的this呼叫被稱為「呼叫上下文」。
事例2
<?php
classa}
class
bextends
a
執行結果:a static value
a類中定義了靜態屬性value,在printvalue()方法中使用self::$value進行呼叫,b類中也定義了乙個靜態屬性value,而後例項化b類,呼叫繼承自a類的printvalue()方法,最後列印出的是「a static value」。這個時候,類a中使用self呼叫被稱為「解析上下文」。
這裡的self被解析為定義printvalue()的a類,而不是解析為呼叫self的b類。
事例3
<?php
class
aclass
bextends
a}
執行結果:a static
value
a類中定義了乙個靜態屬性value,然後定義了乙個繼承自a類的b類,b類中未定義和a類相同的靜態屬性value,但是定義了乙個printvalue()方法,並在該方法中,使用self::$value來呼叫。按「解析上下文的」說法,執行結果應該是會報錯的,說沒有value這個屬性,但是卻列印出了a類中定義的value的值,由此可見,此時self呼叫根據繼承的特性去尋找value值的,這點php並未嚴格執行呼叫上下文和解析上下文。 系統呼叫 上下文 中斷
系統呼叫 在作業系統上如果想要執行你的程式,就得靠自己從面向底層硬體的 編起,但這件事太枯燥,且不是每個人都能做到,這樣作業系統就替我們做這些事情,把硬體封裝,統一提供一套介面,這些介面就是系統呼叫 系統呼叫把應用程式的請求傳給核心,當作業系統接收到系統呼叫請求後,會讓處理器進入核心模式,呼叫相應的...
Flask 中請求上下文和應用上下文的區別和作用?
兩者作用 請求上下文 request context flask從客戶端收到請求時,要讓檢視函式能訪問一些物件,這樣才能處理請求。請求物件是一 個很好的例子,它封裝了客戶端傳送的http 請求。要想讓檢視函式能夠訪問請求物件,乙個顯而易見的方式是將其作為引數傳入檢視函式,不過 這會導致程式中的每個檢...
Flask之請求上下文 應用上下文的概述
flask中有兩種上下文,請求上下文和應用上下文 一 請求上下文 request context request和session都屬於請求上下文物件。2.g 處理請求時,用於臨時儲存的物件,每次請求都會重設這個變數。比如 我們可以獲取一些臨時請求的使用者資訊。request 在每次http請求發生時...