问题标签 [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.
php - PHP Zend 引擎扩展和静态方法
在为 php (5.3) 编写扩展时,我想访问zend_class_entry
静态方法上的指针。
在非静态方法上,我可以像这样使用getThis()
宏和宏内Z_OBJCE_P
:
现在的问题:在静态方法上,getThis()
宏返回一个null
指针,所以我不能使用Z_OBJCE_P
宏。
有没有人为我提供zend_class_entry
从静态方法访问的解决方案?
php - php扩展问题
当我尝试使用 c 创建一个 php 扩展并返回一个数组时,我遇到了一个棘手的问题。我按照一些教程所说的那样做,但是我需要返回一个数组。
array_init(return_array)
在所有示例中,据说都初始化了一个返回数组,但我找不到return_array
声明的地方。所以,我得到了错误:
error C2065: 'return_array' : undeclared identifier
但是,如果我添加:
zval * return_array ;
但它抛出你的应用程序无法读取地址 000000f 为什么?
你能给我一个包含返回数组的详细扩展示例……谢谢数百万次
php - 检测 PHP 变量是否为引用/被引用
PHP中有没有办法确定给定变量是否是对另一个变量的引用和/或被另一个变量引用?我明白,鉴于php.net 上的评论$a=& $b
,设置意味着“ $a 和 $b 在这里完全相等。$a 没有指向 $b 或反之亦然。$a 和 $b 指向同一个地方。 ”
如果无法确定给定变量是否为引用/被引用,是否有一种通用方法可以确定两个变量是否相互引用?同样,在 php.net 上的评论提供了进行这种比较的功能 - 尽管它涉及编辑其中一个变量并查看另一个变量是否受到类似影响。如果可能的话,我宁愿避免这样做,因为我正在考虑的一些变量会大量使用魔法 getter/setter。
在这个实例中请求的背景是编写一个调试函数来帮助详细查看结构。
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文件阅读器。两者都不是很吸引人。还有其他建议吗?
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?
php - 尝试在 PHP 脚本中嵌入我的 C 代码
我正在学习如何使用 SWIG,并且正在为 C 库编写一个 php 包装器。扩展成功编译,但是当我尝试调用该函数时出现此错误:
php:符号查找错误:/usr/lib/php5/20090626+lfs/fact.so:未定义符号:事实
php - 在 linux 上将 php 模块与 .so 库链接
我正在开发一个 PHP 模块,但在与 Linux 下的共享库链接时遇到问题。
我需要在 config.m4 中添加什么命令才能链接到 .so?如果我在 /usr/lib/ 或 /usr/lib64/ 下有我的 .so 文件,编译器应该能够找到它吗?
我当前的 config.m4 文件如下所示
提前致谢
亚历克斯
php - 如何用 C 编写 PHP 模块
我如何用 C 编写自己的模块?是否可以 ?
php - PHP 的内置函数是如何在内部实现的?
这些函数的编写方式是否与用户函数相同?我的意思是 PHP 代码和正则表达式之类的东西?
例如:
filter_var($email, FILTER_VALIDATE_EMAIL);
对比
http://www.totallyphp.co.uk/code/validate_an_email_address_using_regular_expressions.htm
php - PHP 的静态成员和实例成员似乎没有什么不同。为什么 PHP 会这样做(没有警告)?
这意味着 PHP 中的静态方法和实例方法完全没有区别。Zend 甚至没有抱怨它(没有警告)。
在 Zend 引擎中。静态方法和实例方法都保存在 zend_class_entry.function_table 中。
为什么 PHP 会这样?这是一个错误或功能?