问题标签 [php-internals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
765 浏览

php - PHP Zend 引擎扩展和静态方法

在为 php (5.3) 编写扩展时,我想访问zend_class_entry静态方法上的指针。

在非静态方法上,我可以像这样使用getThis()宏和宏内Z_OBJCE_P

现在的问题:在静态方法上,getThis()宏返回一个null指针,所以我不能使用Z_OBJCE_P宏。

有没有人为我提供zend_class_entry从静态方法访问的解决方案?

0 投票
2 回答
233 浏览

php - php扩展问题

当我尝试使用 c 创建一个 php 扩展并返回一个数组时,我遇到了一个棘手的问题。我按照一些教程所说的那样做,但是我需要返回一个数组。 array_init(return_array)在所有示例中,据说都初始化了一个返回数组,但我找不到return_array声明的地方。所以,我得到了错误: error C2065: 'return_array' : undeclared identifier但是,如果我添加:

zval * return_array ;

但它抛出你的应用程序无法读取地址 000000f 为什么?

你能给我一个包含返回数组的详细扩展示例……谢谢数百万次

0 投票
5 回答
5772 浏览

php - 检测 PHP 变量是否为引用/被引用

PHP中有没有办法确定给定变量是否是对另一个变量的引用和/或被另一个变量引用?我明白,鉴于php.net 上的评论$a=& $b,设置意味着“ $a 和 $b 在这里完全相等。$a 没有指向 $b 或反之亦然。$a 和 $b 指向同一个地方。

如果无法确定给定变量是否为引用/被引用,是否有一种通用方法可以确定两个变量是否相互引用?同样,在 php.net 上的评论提供了进行这种比较的功能 - 尽管它涉及编辑其中一个变量并查看另一个变量是否受到类似影响。如果可能的话,我宁愿避免这样做,因为我正在考虑的一些变量会大量使用魔法 getter/setter。

在这个实例中请求的背景是编写一个调试函数来帮助详细查看结构。

0 投票
2 回答
280 浏览

php - 如何制作/修补 php 源代码(c 代码)以从 php.ini 读取数组?

我有 php 经验,但我是 php 源代码和 php 扩展的新手。我想扩展 php 以便它从数组中随机选择一个 upload_tmp_dir,而不是一个固定的目录。

它看起来不像 php 并且 ini 文件读取代码具有解析 ini 文件中的数组的任何自然能力。

是否有任何现有代码或扩展(在树中或树外)允许将 ini 定义的数组映射到 php 中的全局数组 val?

否则我想我会引入像“num_upload_dirs”这样的ini val,然后是“upload_tmp_dir_1”和“upload_tmp_dir_2”等,然后明确检查所有的val。

或者自己将行解析和全局数组创建例程写入ini文件阅读器。两者都不是很吸引人。还有其他建议吗?

0 投票
3 回答
4072 浏览

php - 如何使用 Microsoft Visual C++ 2008 编译 PHP 扩展?

Hello World我用 Microsoft Visual C++ 2008创建了一个 PHP扩展 DLL。我有权利php.ini(我知道,因为当我启用和禁用 gd2 扩展时,会有效果),但是当我加载扩展时它不会在 Additional Modules 下弹出在phpinfo().

当我尝试测试该功能(一个简单的double()功能)时,它显然不起作用。我使用了本教程)。

如果有人可以提供他们在执行此操作时创建的 dll(查看我的是否搞砸了或者它是否是我的服务器),那么我很乐意对其进行测试。

系统规格

操作系统:Windows (Vista)
服务器:WAMP
PHP:5.3.5(还安装了 Xampp 和 IIS)

当我运行命令时,php --ini我收到此错误:

这是否意味着我必须使用版本 9 来编译 PHP?

0 投票
1 回答
778 浏览

php - 尝试在 PHP 脚本中嵌入我的 C 代码

我正在学习如何使用 SWIG,并且正在为 C 库编写一个 php 包装器。扩展成功编译,但是当我尝试调用该函数时出现此错误:

php:符号查找错误:/usr/lib/php5/20090626+lfs/fact.so:未定义符号:事实

0 投票
1 回答
1313 浏览

php - 在 linux 上将 php 模块与 .so 库链接

我正在开发一个 PHP 模块,但在与 Linux 下的共享库链接时遇到问题。

我需要在 config.m4 中添加什么命令才能链接到 .so?如果我在 /usr/lib/ 或 /usr/lib64/ 下有我的 .so 文件,编译器应该能够找到它吗?

我当前的 config.m4 文件如下所示

提前致谢

亚历克斯

0 投票
1 回答
15295 浏览

php - 如何用 C 编写 PHP 模块

我如何用 C 编写自己的模块?是否可以 ?

0 投票
3 回答
1997 浏览

php - PHP 的内置函数是如何在内部实现的?

这些函数的编写方式是否与用户函数相同?我的意思是 PHP 代码和正则表达式之类的东西?

例如:

filter_var($email, FILTER_VALIDATE_EMAIL);

对比

http://www.totallyphp.co.uk/code/validate_an_email_address_using_regular_expressions.htm

0 投票
3 回答
515 浏览

php - PHP 的静态成员和实例成员似乎没有什么不同。为什么 PHP 会这样做(没有警告)?

这意味着 PHP 中的静态方法和实例方法完全没有区别。Zend 甚至没有抱怨它(没有警告)。

在 Zend 引擎中。静态方法和实例方法都保存在 zend_class_entry.function_table 中。

为什么 PHP 会这样?这是一个错误或功能?