27 靜態變數

2021-07-26 07:46:53 字數 2728 閱讀 2823

// 將新的靜態變數放進來

zend_hash_update(cg(active_op_array)->static_variables, varname->u.constant.value.str.val,

varname->u.constant.value.str.len+

1, &tmp, sizeof(zval *), null);

...//省略

opline = get_next_op(cg(active_op_array) tsrmls_cc);

opline->opcode = (fetch_type == zend_fetch_lexical) ? zend_fetch_r : zend_fetch_w; /* 由於fetch_type=zend_fetch_static,程式會選擇zend_fetch_w*/

opline->result.op_type = is_var;

opline->result.u.ea.

type=0;

opline->result.u.

var= get_temporary_variable(cg(active_op_array));

opline->op1 =

*varname;

set_unused(opline->op2);

opline->op2.u.ea.

type

= zend_fetch_static; /* 這在中間**執行時會有大用 */

...//省略

由上可以看到zend_op_array中包含function_name欄位,也就是當前函式的名稱。

再看看獲取當前符號表的函式:

php基礎 27 靜態變數和靜態方法

1 在類中定義靜態變數 訪問修飾符 static 變數名 例如 public static num 0 2 如何訪問靜態變數 如果在類中訪問有兩種方法 self 靜態變數名 類名 靜態變數名 如果在類外訪問 類名 靜態變數名 3 什麼時候需要用靜態變數 當變數需要所有物件共享時,應當使用靜態變數 4...

靜態變數和非靜態變數

class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...

變數 靜態變數

變數 全域性變數 外部變數 在函式外部定義,以及被本程式所有物件或函式引用。區域性變數 內部變數 由某個函式或物件建立,只能被內部引用,而無法被其他物件或函式引用。特點 該變數在全域性資料區分配記憶體 未經初始化的靜態全域性變數會被程式自動初始化為0 在函式體內宣告的自動變數的值是隨機的,除非它被顯...