让PHP更有魅力,扩展你的PHP之入门篇
作者:qt70ewi | 来源:互联网 | 2017-06-26 07:39
文章标题:让PHP更有魅力,扩展你的PHP之入门篇。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
PHP以方便快速的风格迅速在web系统开发中占有了重要地位. PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展.
扩展的3种方式
External Modules
Built-in Modules
The Zend Engine
3 种方式的优缺点可参见 PHP 手册:http://www.php.net/manual/en/zend.possibilities.php
extension dll
1、首先我们去下个 php 的 source. 可以看到有以下几个重要的目录。ext,main,TSRM,Zend,另外我们可能还需要 bindlib_w32(需要你从 cvs 上下),及 PHP 目录下的 php4ts.lib。
2、打开 VC,新建一个 Win32 Dynamic-Link Library,如下图:
[[The No.1 Picture.]]
3、点 ok,选择“An Empty Dll Project”,点击完成。
4、设置 Build 的 Active Configuration,选 Release:)
[[The No.2 Picture.]]
5、Project->settings
[[The No.3 Picture.]]
预定义标识. 整个如下:
ZEND_DEBUG=0, COMPILE_DL_BINZY, ZTS=1, ZEND_WIN32, PHP_WIN32, HAVE_BINZY=1
[[The No.4 Picture.]]
这个是包含路径,上面所提及的几个路径都可以加入。
[[The No.5 Picture.]]
选择 Multithreaded DLL。
[[The No.6 Picture.]]
取名时随便的,要 link php4ts.lib~~
o,忘了,别忘了加上 /Tc 的参数
[[The No.7 Picture.]]
6、写代码.
建个头,建个身体。
Binzy.h
// Binzy Wu
// 2004-4-9
// PHP Extension
#if HAVE_BINZY
extern zend_module_entry binzy_module_entry;
#define binzy_module_ptr &binzy_module_entry
PHP_FUNCTION(hellobinzy); //
PHP_MINFO_FUNCTION(binzy); //
#endif
Binzy.c
// Binzy Wu
// 2004-4-9
// PHP Extension
#include "php.h"
#include "Binzy.h"
#if HAVE_BINZY
#if COMPILE_DL_BINZY
ZEND_GET_MODULE(binzy)
#endif
function_entry binzy_functions[] = {
PHP_FE(hellobinzy, NULL)
{NULL, NULL, NULL}
};
zend_module_entry binzy_module_entry = {
STANDARD_MODULE_HEADER,
"binzy", binzy_functions, NULL, NULL, NULL, NULL, PHP_MINFO(binzy), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES
};
PHP_MINFO_FUNCTION(binzy)
{
php_info_print_table_start();
php_info_print_table_row(2, "Binzy Extension", "Enable");
php_info_print_table_end();
}
PHP_FUNCTION(hellobinzy)
{
zend_printf("Hello Binzy");
}
#endif
7、编译,修改 php.ini,restart apache,写个 php
hellobinzy();
?>
[[The No.8 Picture.]]
phpinfo();
[[The No.9 Picture.]]
小结
这算入门篇, 以后再一步步来~~. 慢慢深入, 有些我也不了解的。 偶是初学者。
推荐阅读
-
本文探讨了在使用phpMyAdmin过程中遇到的mysqli_init()函数错误,并提供了有效的解决方案。 ...
[详细]
蜡笔小新 2024-12-04 17:35:56
-
本文探讨了在执行SQL查询时遇到的因字符集不同而导致查询结果差异的问题,特别是涉及中文字符时。文章分析了在不同字符集设置下,SQL查询结果的变化,并提供了详细的解决方案。 ...
[详细]
蜡笔小新 2024-12-04 16:39:13
-
-
本文探讨了如何在JavaScript中调用PHP函数及实现两者之间的有效交互,包括通过AJAX请求、动态生成JavaScript代码等方法。 ...
[详细]
蜡笔小新 2024-12-04 16:01:36
-
本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ...
[详细]
蜡笔小新 2024-12-04 13:05:33
-
FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ...
[详细]
蜡笔小新 2024-12-03 14:42:56
-
本文深入探讨 ZooKeeper 客户端如何确保在执行写操作后能够正确读取到刚刚写入的数据,特别是在分布式环境下的实现细节。 ...
[详细]
蜡笔小新 2024-12-02 15:24:46
-
本文详细介绍了在Web开发过程中,遇到CSS文件因MIME类型不匹配而无法正确加载的问题及其解决方案,适合前端开发者阅读。 ...
[详细]
蜡笔小新 2024-12-02 14:32:48
-
本文详细解析了Tomcat服务器的核心配置文件server.xml,包括其主要功能、结构组成及各标签的具体作用。 ...
[详细]
蜡笔小新 2024-12-02 11:05:32
-
本文探讨了Go语言(Golang)的学习价值及其在Web开发领域的应用潜力,包括其独特的语言特性和为什么它是现代软件开发的理想选择。 ...
[详细]
蜡笔小新 2024-12-01 01:41:40
-
本文详细记录了在Ubuntu 9.10操作系统上从零开始搭建LAMP(Linux, Apache, MySQL, PHP)环境的过程,包括遇到的问题及解决方案。旨在为初次尝试搭建LAMP环境的开发者提供参考。 ...
[详细]
蜡笔小新 2024-11-30 20:30:52
-
本文详细分析了一个生产系统中遇到的 Apache Axis2 403 Forbidden 错误,并提供了具体的排查步骤和解决方案。 ...
[详细]
蜡笔小新 2024-11-30 18:39:02
-
本文详细介绍了PHP在不同环境下的本地端口配置方法及常见问题解决方案,帮助开发者更好地理解和配置PHP端口。 ...
[详细]
蜡笔小新 2024-11-30 14:27:53
-
本文详细介绍了在PHP中处理请求超时的各种方法,包括设置脚本执行时间、处理file_get_contents函数超时以及优化AJAX请求等,适合开发者参考学习。 ...
[详细]
蜡笔小新 2024-11-29 12:55:50
-
Mario Peshev,自1999年起从事编程工作,现任DevriX首席执行官。本文最初发布于Quora,探讨了计算机技术与编程语言的区别及其对软件开发的影响。 ...
[详细]
蜡笔小新 2024-11-30 16:01:20
-
本文探讨了Java异常处理的本质,提出了设计模式以优化异常处理,并分析了在AOP模型中异常处理的应用。文章强调了正确使用Java异常对于提升代码质量和维护性的关键作用。 ...
[详细]
蜡笔小新 2024-11-30 10:46:18
-