《PHP扩展开发》-协程-开发规范.md 1.5 KB
Newer Older
C
codinghuang 已提交
1
# 开发规范
C
codinghuang 已提交
2

C
Update  
codinghuang 已提交
3 4
[仓库地址](https://github.com/php-extension-research/study)

C
codinghuang 已提交
5 6
在开始开发之前,很有必要先说一下开发的规范问题。

7
1、全局`PHP`扩展函数的声明都放在文件`php_study.h`里面。例如:
C
codinghuang 已提交
8 9 10 11 12

```c++
PHP_FUNCTION(test);
```

C
codinghuang 已提交
13
2、全局`PHP`扩展函数以及扩展方法的参数声明放在`study_*.cc``study.cc`里面。
14

C
codinghuang 已提交
15 16 17 18 19
3、没有别名的全局`PHP`扩展函数的实现放在`study.cc`里面,有别名的全局`PHP`扩展函数的实现放在对应的`study_*.cc`里面。

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

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

```c++
static PHP_METHOD(study_coroutine, test);
```
24

C
codinghuang 已提交
25
5、头文件的引入关系如下:
C
codinghuang 已提交
26

C
codinghuang 已提交
27
```
C
update  
codinghuang 已提交
28 29
study_*.cc 引入 对应的 study_*.h
study_*.h 引入 php_study.h和需要的include/*.h
C
codinghuang 已提交
30 31 32 33 34 35 36
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
```
C
codinghuang 已提交
37

C
codinghuang 已提交
38
6、只在项目根目录下的`study_*.cc`文件里面使用`Zend API`,不在`src`目录的代码里面使用`Zend API`
C
codinghuang 已提交
39

C
codinghuang 已提交
40
7、为了防止重复引入头文件,增加如下条件编译。例如,在`study.h`头文件里面写入:
C
codinghuang 已提交
41 42 43 44 45 46 47 48 49 50 51 52 53

```c++
#ifndef STUDY_H_
#define STUDY_H_


#endif /* STUDY_H_ */
```

注意宏的命名规范。

(待补充)

C
codinghuang 已提交
54
[下一篇:整理文件](《PHP扩展开发》-协程-整理文件.md)