文档章节

PHP扩展内设置变量

c
 colin_86
发布于 08/07 11:42
字数 294
阅读 3
收藏 0

整数

$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);//命名空间

© 著作权归作者所有

c
粉丝 3
博文 199
码字总数 29221
作品 0
成都
高级程序员
私信 提问
PHP(六)函数

当程序代码多了以后,用函数来组织这些程序。PHP最初的设计原则是用函数来组织程序,以让一段代码形成一个”程序模块“,不管在什么地方使用这些函数时,即可调用函数,省去了重复编写代码的...

ChuckleLiu
2015/12/22
53
0
linux设置http/https proxy及忽略proxy的方法

一,场景: 有些linux服务器处于内网,并且没有公网ip,故要想与外网进行http/https通信只能通过nat或者加proxy的方式。nat服务器有网段的限制,而http/https proxy代理则没有,使用起来也方...

leejia1989
2017/12/07
0
0
定制 MediaWiki ,维基百科背后的 wiki 引擎

简介 MediaWiki 应用程序最为人所知之处就是它是 Wikipedia 背后的引擎。很多人都发现 MediaWiki 提供了一个可用的环境来在工作组、甚至整个组织以及在线社区之间共享信息。MediaWiki 让用户...

红薯
2010/08/09
3.7K
1
Cygwin下安装Linux PHP环境和Swoole扩展并在PHPStorm中调试

这边博文的目的有以下几点: 1、Win下安装cygwin 2、在cygwin中安装php环境和php开发环境 3、安装swoole扩展 4、设置PHPStorm和cygwin完成PHPStrom的远程调试配置 以下是正文部分: 1、Win下...

碳素云信息技术
2016/04/13
1K
1
初步了解 PHP V6 中的新特性

增强对 Unicode 的支持 PHP V6 中的主要特性是增强对 Unicode 的支持。目前,PHP 实际上是一个二进制处理器。PHP V5 没有提供原生的 Unicode 支持;它假定所有字符的长度都为 1 字节,这在处...

红薯
2009/06/07
817
0

没有更多内容

加载失败,请刷新页面

加载更多

一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
35分钟前
4
0
https证书买哪家好?有哪些供应商

在选购https证书前除了要了解类型外,还需要了解https证书供应商,毕竟不同的供应商,提供的产品质量与服务也是有差异的。今天小编就为大家讲讲https证书供应商方面的内容,希望各位会喜欢。...

安信证书
37分钟前
5
0
Zuul 配置

概述:zuul底层是基于servlet,是由一系列的filter链构成。 1、路由配置 a、单例serverId映射 zuul: routes: client-a: path: /client/** serviceId: client-a 意思是...

java框架开发者
55分钟前
3
0
zk中FinalRequestProcessor解析

是处理器最后一个环节 FinalRequestProcessor implements RequestProcessor 处理器链最后一个环节处理事务和非事务请求最后一个环节 构造器 public FinalRequestProcessor(ZooKeeperServer z...

writeademo
55分钟前
4
0
Axios 详解

首先祝广大程序猿们节日快乐! 一、axios简介 基于promise,用于浏览器和node.js的http客户端 二、特点 支持浏览器和 node.js 支持 promise 能拦截请求和响应 能转换请求和响应数据 能取消请求...

张兴华ZHero
56分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部