PHP扩展内设置变量

整数

$lng = 2;

zval var_value;
ZVAL_LONG(&var_value, 2);
zend_set_local_var_str("lng", 3, &var_value, 0);
ZVAL_NULL(&var_value);

浮点

$lng = 2.5;

zval var_value;
ZVAL_LONG(&var_value, 2);
zend_set_local_var_str("lng", 3, &var_value, 0);
ZVAL_NULL(&var_value);

字符串

$lng = "abc";

ZVAL_STRING(&var_value, "abc");
zend_set_local_var_str("lng3", 4, &var_value, 0);
ZVAL_NULL(&var_value);

数组

$lng4 = [2=>1,'ab'=>c];

array_init(&var_value);
add_index_long(&var_value, 2, 1);
add_assoc_stringl_ex(&var_value, "ab", 2, "c", 1);
zend_set_local_var_str("lng4", 4, &var_value, 0);
ZVAL_NULL(&var_value);

对象

$lng4 = new demo();

zend_class_entry* ce;
zend_string* class_name;
class_name = zend_string_init("demo", 4, 0);
ce = zend_fetch_class(class_name, ZEND_FETCH_CLASS_AUTO); //获取类     
zend_string_release(class_name);
object_init_ex(&var_value, ce);
zend_set_local_var_str("lng5", 4, &var_value, 0); //设置本地变量
ZVAL_NULL(&var_value);

整体代码

PHP_FUNCTION(confirm_arithmetic_compiled)
{
	zval var_value;

	ZVAL_LONG(&var_value, 2);
	zend_set_local_var_str("lng1", 4, &var_value, 0);
	ZVAL_NULL(&var_value);

	ZVAL_DOUBLE(&var_value, 2.5);
	zend_set_local_var_str("lng2", 4, &var_value, 0);
	ZVAL_NULL(&var_value);

	ZVAL_STRING(&var_value, "abc");
	zend_set_local_var_str("lng3", 4, &var_value, 0);
	ZVAL_NULL(&var_value);

	array_init(&var_value);
	add_index_long(&var_value, 2, 1);
	add_assoc_stringl_ex(&var_value, "ab", 2, "c", 1);
	zend_set_local_var_str("lng4", 4, &var_value, 0);
	ZVAL_NULL(&var_value);

	//创建对象变量
	zend_class_entry* ce;
	zend_string* class_name;
	class_name = zend_string_init("demo", 4, 0);
	ce = zend_fetch_class(class_name, ZEND_FETCH_CLASS_AUTO); //获取类     
	zend_string_release(class_name);
	object_init_ex(&var_value, ce);
	zend_set_local_var_str("lng5", 4, &var_value, 0); //设置本地变量
	ZVAL_NULL(&var_value);

}

测试代码

class demo {}

confirm_arithmetic_compiled();

var_dump($lng1);
var_dump($lng2);
var_dump($lng3);
var_dump($lng4);
var_dump($lng5);

常量

//定义常量数组详见:https://www.cnblogs.com/CoderK/articles/6943287.html
REGISTER_STRINGL_CONSTANT("__SITE__", "www.bo56.com", 12, CONST_PERSISTENT);
REGISTER_NS_STRINGL_CONSTANT("say", "__SITE__", "bo56.com", 8, CONST_CS|CONST_PERSISTENT);//命名空间

转载于:https://my.oschina.net/colin86/blog/3084591

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值