PHP Extension

新手搞PHP ,之前用过 PERL, BASH; 所以开始用PHP 写程序上手比较快, 几天之后对PHP 的内部实现机制产生了兴趣,所以自己尝试着写写简单的PHP 扩展,以增加对PHP 的理解。

一 环境

Ubuntu 12.04

PHP 5.3.10

二 步骤

1, 下载PHP 源代码(php5.3.10)并解压到本地

2 , cd到PHP 源代码的根目录下

3, cd到ext/目录下

4, 使用ext_skel 脚本自动生成代码stub ext_skel --extname=module_name

5, 根据ext_skel的提示一次执行

1 5.1   $ cd ..
2 5.2.  $ vi ext/example/config.m4
3 5.3.  $ ./buildconf
4 5.4.  $ ./configure --[with|enable]-example
5 5.5.  $ make
6 5.6.  $ ./php -f ext/example/example.php
7 5.7.  $ vi ext/example/example.c
8 5.8.  $ make

6, 新生成的example module的stub代码当中,执行

phpize --生成congifure 和config.h

1 ./configure --[with|enable]-example
2 make
3 make test
4 sudo make install

6修改php.ini,添加新开发的module

php -i

php -m

时间: 2024-10-07 05:07:22

PHP Extension的相关文章

VS2010 Extension实践(2)

在上一篇(VS2010 Extension (1)实践)里,主要展示了如何使用MEF扩展VS2010,来扩展编辑控制和展现自己的UI:在实现QuickToolbar的时候,发现MEF仅仅提供了很基本的编辑控制,如果需要高级的操作,比如注释选择的代码,就捉襟见肘,很是麻烦. 本篇我将展示如何深入挖掘VS2010 Extension,使它成为锋利的军刀,而不是绣花枕头.鉴于此,这里就从上面提到了的Feature--注释和取消注释选择的代码来剖析,希望可以为大家拓宽思路,更好的利用VS2010. 首先

解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:

php5个版本,5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in,看意思就很明了,说mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代. 解决方法1: 禁止PHP报错 d

Extension

Extension 可以认为是一种匿名的 Category, Extension 与 Category 有如下几点显著的区别: 1.使用 Extension 必须有原有类的源码 2.Extension 声明的方法必须在类的主 @implementation 区间内实现,可以避免使用有名 Category 带来的多个不必要的 implementation 段. 3.Extension 可以在类中添加新的属性和实例变量,Category 不可以(注:在 Category 中实际上可以通过运行时添加新

App Today Extension开发注意事项

从iOS 8起,就有了App Extension.Extension的种类至今也扩充到了19种,应用也很广泛,值得重点关注起来. Extension几乎可以看做一个内嵌的独立App,拥有独立的BundleID.证书.概要配置文件.进程空间.沙盒等等.只是需要打包在App内,类似于寄生在宿主App内,捆绑安装.不过一旦安装应用后,扩展可以由系统独立调用,执行扩展内的代码逻辑. 这篇只记录之前开发Today Extension的过程中,值得注意的事项.其实大多都是通用的. 1.创建Extension

Chrome plug-in 和Extension

"扩展"和"插件",其实都是软件组件的一种形式,Chrome 只不过是把两种类型的组件分别给与了专有名称,一个叫"扩展",另一个叫"插件". 扩展(Extension),指的是通过调用 Chrome 提供的 Chrome API 来扩展浏览器功能的一种组件,工作在浏览器层面,使用 HTML + Javascript 语言开发[*].比如著名的 Adblock plus. 插件(Plug-in),指的是通过调用 Webkit 内

CreateProcess error=206, The filename or extension is too long"的一个解决方案

在实际项目中我使用antrun 和 closure-compiler压缩JS项目.然后我就使用如下代码: 首先加入依赖. <dependency> <groupId>com.google.javascript</groupId> <artifactId>closure-compiler</artifactId> <version>v20160315</version> </dependency> pom.xml

iOS Today Extension/widget编程小记

从iOS8开始,下拉的"今天"里,应用可以添加自己的小widget,就是下图这样的东西: 这个东西在Android里叫widget,不过在iOS中我们叫它Today Extension,因为它是iOS中众多种类的extensions中的一种. Extensions有很多种,Today Extension之外,还有包括Share.Action.Photo Editing.Document Provider.Custom Keyboard.Watch App这些:其中一些很熟悉,像Watc

Plug-in &#39;org.eclipse.cdt.ui&#39; contributed an invalid Menu Extension

终于在mac上配置了最新的eclipse和adt(Win和Mac oxs通用),然后就Error Log报这种错误,运行了hello word,没有影响,但是依旧有这种错误! 记录下错误: eclipse.buildId=4.4.2.M20150204-1700java.version=1.8.0_45java.vendor=Oracle CorporationBootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=zh_CNFram

五 Swift开发之扩展(Extension)

五 Swift开发之扩展(Extensions) //扩展就是向一个已有的类.结构体或枚举类型添加新功能(functionality).这包括在没有权限获取原始源代码的情况下扩展类型的能力(即逆向建模).扩展和 Objective-C 中的分类(categories)类似.(不过与Objective-C不同的是,Swift 的扩展没有名字.) Swift 中的扩展可以: 1.添加计算型属性和计算静态属性 2.定义实例方法和类型方法 3.提供新的构造器 4.定义下标 5.定义和使用新的嵌套类型 6

ObjectC----NSDate和Extension以及代理协议的用法

//  Created By 郭仔   2015年04月03日20:09:43 NSDate * nowDate = [NSDate date]; NSLog(@"%@",nowDate); // 距离现在3600*24秒的时间日期,单位秒 NSDate * tomorrow = [NSDate dateWithTimeIntervalSinceNow:3600*24]; NSLog(@"%@",tomorrow); NSDate * date = [NSDate