PHP 板


LINE

看板 PHP  RSS
Zephir 是一个新的编译语言,语法上大抵为 PHP-like (但不相容於 PHP) 这个语言的功能就是简化撰写 PHP extension 的过程 由於 Zephir 编译器会将 Zephir 程式码转为 C 程式码 再将此 C 程式码转为 PHP extension (.so 或 .dll) 所以,使用者不需要撰写 C 由於 Zephir 的程式码很像 PHP,这里就不介绍语法 而会介绍使用 Zephir 的一些要点 如果要试写 Zephir,要找有支援的 editor 由於 Zephir 不相容於 PHP,使用 PHP editor 行不通 笔者是用 Atom,有基本的 syntax highlighting for Zephir 目前只能透过 Github repo 安装 在 Ubuntu/Debian 上,安装以下套件 $ sudo apt-get install build-essential git re2c \ php5 php5-json php5-dev libpcre3-dev 我自己是用 Debian,其他 OS 请自行变换套件 接着,下载 Zephir repo $ git clone https://github.com/phalcon/zephir.git $ cd zephir $ ./install-nosudo 会安装 zephir 执行档到 ~/bin。只是要试用的话,不需要 global install 透过 zephir 可建立 Zephir 专案 $ zephir init utils $ cd utils $ tree . ├── config.json ├── ext/ └── utils/ 预设会有 config.json (设定档),ext/ 和 utils/ 资料夹 其中 ext/ 放的是一些自动生成的档案及最後的 PHP extension 最好不要在 ext/ 里面放自己的东西,有可能被洗掉 我们的 Zephir 程式码就是放在 utils/ 里面 要注意的是,Zephir 会将 utils/ 视为 namespace 的一部分 如果修改的话,设定档要做相对应的修改 我自己是用类似 Java 的习惯,将专案改为 com/example/matrix.zep 这里,namespace 就设成 com 以我们这个专案为例,程式码如下: namespace Com\Example; class Matrix { // Some part omitted } 我们省略实作,请板友自行到 repo 看 要注意的是,每个 Zephir 档案要有一个 class,而且只能有一个 class namespace 也要和专案结构一致,而且不能省略 namespace 这个限制刚好和 Java 有微妙的相似处 笔者用 Zephir 实作 PHP extension 时 一开始都很愉快,因为语法很像 PHP,所以写起来很快 後来,不熟 Zephir 的语法,开始会写错 Zephir 编译器跳出这个奇妙的错误讯息 Zephir\Exception: Cannot parse file: /home/user/src/php_ex/matrix-in-zephir/com/example/matrix.zep 而且,不论我错在程式码的任何位置,错误讯息都一样 笔者本来一度想放弃,为了完成这篇教学文,耐着性子把专案写完 等笔者确定写对,编译成功後,还回头故意写错某些地方 结果很奇妙地又跳一样的错误讯息 Orz [Update] 後来查到,好像是 Zephir 安装过程有误所造成的,可看 Zephir 的 issues 但小弟试了几次,还是弄不起来,後来就放弃了,不想浪费时间搞这个 本来笔者想试着结合 C shared library,结果发现相当困难 Zephir 要结合外部 C 语言,有两个方法 - cblock:官方文件完全没写相关说明,透过 stackoverflow 上的神人介绍 小弟才知道有这个东西,而且不知道如何结合 struct 等复杂结构 - optimizer:官方文件只有一页,而且说明相当简略 只能去挖 Zephir 本身的原始码,而原始码没有任何注解 = =... 笔者想了想,毕竟 Zephir 本身的设计,就是要让使用者不用碰 C 语言 就把 Zephir 当成是某个不能连结 C 的 DSL 就会比较寛心一点... 笔者对 Zephir 的探索到这里大概就结束了 虽然 Zephir 写很来很快很方便 但 Zephir 目前的一些问题,让笔者不是很推这个语言 这个语言毕竟还很年轻,或许未来还会有些变化也说不定 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.180.193.126
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1481123811.A.DBB.html ※ 编辑: Neisseria (175.180.193.126), 12/07/2016 23:20:44 ※ 编辑: Neisseria (175.180.193.126), 12/08/2016 07:42:06 ※ 编辑: Neisseria (60.251.46.166), 12/24/2018 16:07:43







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP