PHP7擴充套件開發之建立變數

2021-08-01 22:59:56 字數 1271 閱讀 3050

在這篇博文中我們將演示如何在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...