我正在为PHP编写一个小扩展.有没有办法在运行时知道正在运行的脚本文件(例如:)的名称test.php?也许一些全球或环境变量?
我尝试过的:
//...
zend_long dest;
if (UNEXPECTED(!zend_parse_arg_long(arg, &dest, NULL, 0, 0))) {
zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type integer", "", zend_zval_type_name(arg), "", arg);
}
zval_ptr_dtor(arg);
ZVAL_LONG(arg, dest);
//...
Run Code Online (Sandbox Code Playgroud)
问题是,如果arg是一个带有格式错误的数字的字符串,就像"10x"引擎引发了一个通知:
Notice: A non well formed numeric value encountered in...
Run Code Online (Sandbox Code Playgroud)
我真正想要的是能够arg像下面的PHP用户态代码一样进行转换:
(int) "10x" // evaluates to 10, no NOTICE
Run Code Online (Sandbox Code Playgroud)
我仍在浏览zend API,所以欢迎任何有关如何找到一个好的(更新的)PHP内部参考或一般建议的帮助.
他们似乎是同一回事,但又有所不同。我不知道是哪一个:我知道我们可以将PDO用作,new PDO()并使用prepare()和query()方法来从数据库中获取数据。因此,如果PDO在扩展列表中提到了这一点,那么pdo_mysql和mysqlnd到底是什么(用外行术语)?
我在Windows 10家庭单语言64位操作系统上运行的笔记本电脑上使用PHP 7.2.8
我已经使用最新版本的XAMPP安装程序在笔记本电脑上安装了PHP 7.2.8。
我从PHP手册的phpinfo()函数描述中看到以下文本
输出有关PHP当前状态的大量信息。这包括有关PHP编译选项和扩展的信息,......
从上述《 PHP手册》中的文字中,我没有得到“ PHP编译选项”的确切含义。
我phpinfo();通过在笔记本电脑上运行来检查输出。
我只能在输出中看到与编译相关的一行,如下所示:
编译器MSVC15(Visual C ++ 2017)
上一行是不是PHP手册中提到的“ PHP编译选项”或“ PHP编译选项”之外的其他内容?
如果“ PHP编译选项”的意思与我上面提到的相同,那么为什么输出中不多于一个编译选项phpinfo();?
我正在编写小的php扩展,并在构建它时遇到问题.代码:
PHP_RINIT_FUNCTION(pstat)
{
int argc = ZEND_NUM_ARGS();
return SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
on make出错了:
.... /ext/pstat/pstat.c:122:31: error: 'ht' undeclared (first use in this function)
Run Code Online (Sandbox Code Playgroud)
ZEND_NUM_ARGS()是Zend_API.h中的一个宏
#define ZEND_NUM_ARGS() (ht)
Run Code Online (Sandbox Code Playgroud)
但是'什么'是什么?有任何想法吗?