查看内容

如何编写一个独立的

  • 2020-05-07 04:43
  • Web前端技术
  • Views

单身的 PHP 增添能够独自于 PHP 源码之外举行分发。要创建八个如此的扩充,必要筹算好两样东西:

  • 配备文件 (config.m4卡塔尔
  • 您的模块源码

接下去大家来叙述一下一旦成立这一个文件并组成起来。

未雨准备好系统工具

想要扩张能够在系统上编写翻译并打响运营,须要寻思转以下工具:

  • GNU autoconf
  • GNU automake
  • GNU libtool
  • GNU m4

如上那么些都足以从 ftp://ftp.gnu.org/pub/gnu/ 获取。

注:以上那些都是类 Unix 遭遇下能力接受的工具。

改装一个早就存在的强盛

为了突显出成立一个单独的强盛是超轻易的业务,我们先将贰个已经内嵌到 PHP 的扩充改成单身扩充。安装 PHP 而且实践以下命令:

$ mkdir /tmp/newext
$ cd /tmp/newext

以后您早就有了多个空目录。我们将 mysql 扩大目录下的文书复制过来:

$ cp -rp php-4.0.X/ext/mysql/* .
# 注:看来这篇 README 真的需要更新一下了
# PHP7 中已经移除了 mysql 扩展部分

到此地扩大就完事了,实践:

$ phpize

于今你能够单独存放在这里个目录下的文书到其余省点,这一个扩充能够完全独立存在了。

顾客在编写翻译时索要利用以下命令:

$ ./configure 
       [--with-php-config=/path/to/php-config] 
       [--with-mysql=MYSQL-DIR]
$ make install

那样 MySQL 模块就足以选取内嵌的 MySQL 顾客端库只怕已安装的放在 MySQL 目录中的 MySQL。

注:意思是说想要编写 PHP 扩张,你既供给已经设置了 PHP,也须要下载一份 PHP 源码。

概念多少个新扩大

小编们给示例扩大命名称为 “foobar”。

新扩大包蕴多个能源文件:foo.c 和 bar.c(还应该有一部分头文件,但那几个不独有首要)。

演示扩大不引用任何外界的库(这一点很要紧,因为这么顾客就不要求专门钦点一些编写翻译选项了)。

LTLIBRARY_SOURCES 选项用于钦定财富文件的名字,你能够有专擅数量的能源文件。

注:上面说的是 Makefile.in 文件中的配置选项,能够参照他事他说加以考察 xdebug

修正 m4 后缀的配备文件

m4 配置文件可以钦赐一些附加的自己批评。对于叁个独门扩大来讲,你只必要做一些宏调用就能够。

PHP_ARG_ENABLE(foobar,whether to enable foobar,
[  --enable-foobar            Enable foobar])

if test "$PHP_FOOBAR" != "no"; then
  PHP_NEW_EXTENSION(foobar, foo.c bar.c, $ext_shared)
fi

PHP_ARG_ENABLE 会自动安装好精确的变量以保障扩张能够被 PHP_NEW_EXTENSION 以共享方式运行。

PHP_NEW_EXTENSION 的率先个参数是扩展的称谓,第4个参数是财富文件。第七个参数 $ext_shared 是由 PHP_ARG_ENABLE/WITHPHP_NEW_EXTENSION 设定的。

请始终使用 PHP_ARG_ENABLEPHP_ARG_WITH 举行安装。固然你不计划公布你的 PHP 模块,那么些设置也得以确定保障让您的模块和 PHP 主模块的接口保持紧凑。

注:PHP_ARG_ENABLEPHP_ARG_WITH 应该是用以定义模块是动态扩充依然静态编写翻译进 PHP 中,就跟编写翻译 PHP 时利用的 --enable-xxx--with-xxx 一样。

创办财富文件

ext_skel 可认为你的 PHP 模块成立一些通用的代码,你也得以编写一些主干函数定义和 C 代码来管理函数的参数。具体音信方可查阅 READNE.EXT_SKEL

无须操心未有表率,PHP 中有成百上千模块供您参考,选拔多少个简便的点起来,增添你和睦的代码。

注:ext_skel 能够生成好中央模块供给的财富文件和布局文件,没有必要本人成立。

校勘自定义模块

将 config.m4 文本和财富文件放到同多少个目录中,然后实施 phpize (PHP 4.0 以上的本子编写翻译 PHP 的时候都设置了 phpize)。

假若你的 phpize 不在系统意况变量中,你供给钦命相对路线,举个例子:

$ /php/bin/phpize

本条命令会自行复制必须的创设文件到当前目录并依据 config.m4 创制布局文件。

由此上述的手续,你已经有了二个单身的强盛了。

设置扩大

强大能够通过以下命令编写翻译安装:

$ ./configure 
            [--with-php-config=/path/to/php-config]
$ make install

给模块增加分享扶助

不经常候独立扩充需假使分享的已供别的模块加载。接下来笔者会解释什么给曾经创设好的 foo 模块加多共享帮衬。

  1. 在 config.m4 文件中,使用 PHP_ARG_WITH/PHP_ARG_ENABLE 来设定扩充,那样就足以自行使用 --with-foo=shared[,..]--enable-foo=shared[,..] 那样的授命作为编写翻译参数了。
  2. 在 config.m4 文件中,使用 PHP_NEW_EXTENSION(foo,.., $ext_shared) 使扩大能够被营造。
  3. 增多以下代码到您的 C 语言能源文件中:
   #ifdef COMPILE_DL_FOO
   ZEND_GET_MODULE(foo)
   #endif

这一段讲的方面都提到过了,这里只是又重申了一晃。

PECL 网址约定

固然你希图发表你的强大到 PECL 的网站,须要考虑以下几点:

  1. 添加 LICENSE 或 COPYING 到 package.xml
  2. 要求在扩大头文件中定义好版本新闻,那几个宏会被 foo_module_entry 调用来声称增添版本:
   #define PHP_FOO_VERSION "1.2.3"
上一篇:没有了 下一篇:没有了