1
+ <!DOCTYPE html>
2
+ < html >
3
+ < head >
4
+ < meta charset ="UTF-8 ">
5
+ < meta name ="viewport " content ="width=device-width, initial-scale=1, shrink-to-fit=no ">
6
+ < title > zendAPI - The C++ layer for Zend Engine</ title >
7
+ < link rel ="stylesheet " href ="/statics/css/common.css " />
8
+ < link rel ="icon " href ="/zendapi.ico " type ="image/ico "/>
9
+ < script type ="text/javascript " src = "/statics/js/manifest.js "> </ script >
10
+ < script type ="text/javascript " src = "/statics/js/vendors.js "> </ script >
11
+ < script type ="text/javascript " src = "/statics/js/common.js "> </ script >
12
+
13
+
14
+ </ head >
15
+ < body >
16
+ < div id ="fakeLoader "> </ div >
17
+ < script type ="application/javascript ">
18
+
19
+
20
+ window . ARTICLE_DATA = {
21
+ title : "我为什么要基于 PHP-CPP 去实现 zendAPI 项目" ,
22
+ date : "2017/07/26 10:07:08" ,
23
+ content : [ "<p>记得去年的这个时候,我刚来奇虎的时候,在研究 PHP 的时候无意之中发现了 PHP—CPP 这个项目,立刻就被她吸引了,原来 PHP 的扩展居然还可以这样去实现,以一种面向对象的方式去开发,我感觉这个是个很好的开头。中间辗转反侧,我也尝试了两个项目,一个是 TOPJS 现在暂时停止了,另一个是 qingeditor,同样暂停开发,折腾最终我也是觉得在 PHP 领域做点东西,所以开始构思 zendAPI。</p>" , "<p>我现在的情况是:</p>" , "<ol>" , "<li>我从未开发过 c++ 项目</li>" , "<li>我从来没有开发过 PHP 扩展</li>" , "<li>我需要一个由我控制的项目,实施自己的想法,可能不成熟</li>" , "</ol>" , "<p>基于这两个条件,我急需要一个类似的项目作为原型进行开发,所以选择了 PHP-CPP。这个项目文档还算完整,有简单是使用文档,但是没有 API 接口文档,对 zend engine 进行了封装,但是封装的不够完整。使用了一些面向对象的风格去封装,但是又没装的不彻底。最不好的一个是,php-cpp 是一个动态库,但是却不具备 Qt 那样的二进制兼容保证。<br>其实之前有想过给 php-cpp 提需求,但是我没什么名气,也是个菜鸟,所以打住了这个想法。</p>" , "<p>基于以上的原因,我开始了 zendAPI 项目,同时基于 php-cpp 进行开发,第一版中我们会有很多接口,编程模式跟 php-cpp 保持基本相似,这样可以让我快速的切入 php 扩展开发,在做的过程中有项目比较成熟的项目进行参考,大大节约了我填坑的成本,同时也防止了我掉进一些坑的可能性。在研究 php-cpp 我也可以实践 c++ 编程和熟悉 php 接口,为进一步改进 php-cpp 奠定坚实的基础。</p>" , "<p>相信我,我会努力将 zendAPI 打造好,等到成熟的那一天,我也会将代码贡献给 php-cpp。</p>" , "" ] ,
24
+ prev : null ,
25
+ next : { "title" :"zendAPI 项目开发计划" , "url" :"/2017/07/21/xiangmukaifajihua/index.html" }
26
+ } ;
27
+
28
+ window . SITE_CATEGORIES = [ { "name" :"网站首页" , "url" :"/" } , { "name" :"手册" , "url" :"/manual" } , { "name" :"API文档" , "url" :"/api" } , { "name" :"博客" , "url" :"/blog" } , { "name" :"关于我们" , "url" :"/about" } ]
29
+
30
+ </ script >
31
+ < div class ="uk-offcanvas-content ">
32
+ < div id ="header-wrapper " class ="uk-container uk-margin-remove uk-container-expand site-header " uk-sticky ="show-on-up: true; animation: uk-animation-slide-top; "> </ div >
33
+ < script src ="/statics/js/pages/article.js "> </ script >
34
+ < link rel ="stylesheet " href ="/statics/css/article.css ">
35
+ < div id ="container "> </ div >
36
+ < div id = "footer-wrapper "> </ div >
37
+ < div id ="offcanvas-push " uk-offcanvas ="mode: slide; overlay: true ">
38
+ < div class ="uk-offcanvas-bar " id = "sidebar ">
39
+ < button class ="uk-offcanvas-close " type ="button " uk-close > </ button >
40
+ < div class ="menu-container ">
41
+
42
+ < ul class = "uk-text-left uk-width-1-1 ">
43
+
44
+ < li class ="uk-width-1-1 "> < a href = "/ "> 网站首页</ a > </ li >
45
+
46
+ < li class ="uk-width-1-1 "> < a href = "/manual "> 手册</ a > </ li >
47
+
48
+ < li class ="uk-width-1-1 "> < a href = "/api "> API文档</ a > </ li >
49
+
50
+ < li class ="uk-width-1-1 "> < a href = "/blog "> 博客</ a > </ li >
51
+
52
+ < li class ="uk-width-1-1 "> < a href = "/about "> 关于我们</ a > </ li >
53
+
54
+ </ ul >
55
+
56
+
57
+ </ div >
58
+ </ div >
59
+ </ div >
60
+ </ div >
61
+ </ body >
62
+ </ html >
0 commit comments