在這篇博文中我們將演示如何在php擴充套件中建立乙個變數。示例**如下:
<?php
class demo {} $lng = 2; $str = "abc"; $arr = array(1,'a' => 'b'); $obj = new demo(); var_dump($str); var_dump($arr); var_dump($obj); ?>
中間的三行我們將用php擴充套件來實現。
define_var方法的php擴充套件原始碼:
php_function(define_var)
現在,我們在php**中呼叫這個方法,看下效果。
<?php
class demo {} define_var(); var_dump($str); var_dump($arr); var_dump($obj); ?>
執行效果如下:
$ php ./test.php
int(2) string(3) "abc" array(2) object(demo)#1 (0)
注意,下面的內容,我們把php擴充套件中的zval結構成為變數,把php**中的變數成為本地變數。
建立本地變數主要分兩步,建立變數和設定為本地變數。
變數的型別有多種,在建立變數的方式也有所不同。
對於簡單的資料型別,建立變數很簡單。只需呼叫相應的巨集方法就可以。
這些方法在zend/zend_types.h檔案中,巨集方法以zval_開頭。如:
zval_null 設定為null
zval_false 設定為false。
zval_true 設定為true
zval_bool 設定bool。
zval_long 設定long。
zval_double 設定為double。
使用方法,可以參考上面**中zval_long的呼叫。
對於陣列,物件,字串等複雜資料型別。比較麻煩。可以參考上面的示例**。
設定本地變數zend引擎為我們提供了兩個方法。兩個函式的使用,都在以上的**中做了演示。這兩個方法的應用場景有所差別。
zend_set_local_var
如果已經存在型別為zend_string的變數名,則使用這個方法建立本地變數
zend_set_local_var_str
如果沒有型別為zend_string的變數名,使用此方法建立本地變數
白話PHP7擴充套件開發之建立物件
本篇文章主要將如何在擴充套件中建立乙個物件。建立的物件的過程,其實和乙個小孩出生,成長的過程有些類似。生孩子第一步,先辦准生證。宣告我要生孩子了。物件建立的時候,如何辦准生證呢?只要定義乙個zend class entry變數即可。如下 zend class entry ce zend class ...
白話PHP7擴充套件開發之建立物件
本篇文章主要將如何在擴充套件中建立乙個物件。建立的物件的過程,其實和乙個小孩出生,成長的過程有些類似。生孩子第一步,先辦准生證。宣告我要生孩子了。物件建立的時候,如何辦准生證呢?只要定義乙個zend class entry變數即可。如下 zend class entry ce zend class ...
PHP7擴充套件開發之hello word
原文出處 本文是以php7作為基礎,講解如何從零開始建立乙個php擴充套件。本文主要講解建立乙個擴充套件的基本步驟都有哪些。示例中,我們將實現如下功能 echo say 輸出內容 php test.php hello word 在擴充套件中實現乙個say方法,呼叫say方法後,輸出 hello wo...