专栏首页PHP饭米粒手把手撸PHP扩展 0x01: 开发规范

手把手撸PHP扩展 0x01: 开发规范

在开始开发之前,很有必要先说一下开发的规范问题。

1、全局PHP扩展函数的声明都放在文件php_study.h里面。例如:

PHP_FUNCTION(test);

2、全局PHP扩展函数以及扩展方法的参数声明放在study_*.ccstudy.cc里面。

3、没有别名的全局PHP扩展函数的实现放在study.cc里面,有别名的全局PHP扩展函数的实现放在对应的study_*.cc里面。

例如,study_coroutine_create的别名是Study\Coroutine::Create

4、扩展方法声明放在相应的study_*.cc文件里面,并且声明为static类型。例如:

static PHP_METHOD(study_coroutine, test);

5、头文件的引入关系如下:

study_*.cc 引入 对应的 study_*.h
study_*.h 引入 php_study.h和需要的include/*.h
study.cc 引入 php_study.h
php_study.h 引入 php内核提供的头文件
php_study.h 引入 include/study.h
include/study.h 引入 标准库函数
src/*.c 引入 对应的/include/*.h
include/*.h 按需引入 其他的include/*.h

6、只在项目根目录下的study_*.cc文件里面使用Zend API,不在src目录的代码里面使用Zend API

7、为了防止重复引入头文件,增加如下条件编译。例如,在study.h头文件里面写入:

#ifndef STUDY_H_
#define STUDY_H_


#endif /* STUDY_H_ */

注意宏的命名规范。

(待补充)

下一篇:整理文件

本文分享自微信公众号 - PHP饭米粒(phpfamily),作者:codinghuang

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手撸PHP扩展 0x05: 协程创建(一)

    首先,我们需要一个PHP可用的协程,根据梳理一下架构这篇文章的内容,我们需要在study_coroutine.h里面来定义:

    桶哥
  • Hyperf 发布 Swoole Enterprise 及 视图 及 Task 组件 | 企业级的 PHP 微服务协程框架

    本次更新主要新增了 Swoole Enterprise 组件 和 视图 组件 和 Task 组件,同时强化了 JSON RPC 的异常处理和完善了 JSON R...

    桶哥
  • 手把手撸PHP扩展 0x04: 梳理一下架构

    首先,我们需要去实现一个协程库,这个协程库是与PHP本身无关的。也就是说,我们实现的这个协程库可以用在其他地方,不一定是给PHP用的,功能主要是和上下文切换有关...

    桶哥
  • 在 iOS 项目中使用 ESRI ArcGIS SDK

    ArcGIS SDK for iOS 是 ESRI 公司针对 iOS 平台的 GIS 解决方案, 以 iOS Framework 的形式提供, 与 iOS 自带...

    beginor
  • 程序员的江湖:从黑木崖到回龙观

    毕业时,带着一本《深入浅出MFC》和一张磨损严重的键盘去了北方的燕京,号称:一书一键闯天涯。

    康亮
  • 【R语言经典实例7】运算符优先级问题

    所有的运算符显示在表2-1中,并以最高优先级至最低优先级的顺序排列。相同优先级的运算符,除特指外皆由从左至右的顺序进行运算。

    统计学家
  • css3动画从入门到精通

    什么是css3动画? 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。 CSS3带来了圆角,半透明...

    xiangzhihong
  • Elasticsearch 系统默认分词器

    介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Ela...

    zhisheng
  • 强大的jQuery验证插件:jquery.validate.js+jquery.validate.unobtrusive.js

    不得不说,自从HTML5被广泛接受并开始应用在互联网项目以后,jQuery越来越体现出其优越性了。以前接触过jQuery.Validate客户端验证插件,当时觉...

    崔文远TroyCui
  • 6. Vue v-on绑定监听事件的基本使用

    v-on命令就是相当于js中的事件绑定,例如绑定click、mouseover等等监听事件。

    Devops海洋的渔夫

扫码关注云+社区

领取腾讯云代金券