zephir

zephir-(3)你的第一个PHP拓展

荒凉一梦 提交于 2019-12-03 07:57:59
#zephir-你的第一个PHP拓展# ##前言## 先在这里感谢各位zephir开源技术提供者 在之前的介绍中大家不仅了解了zephir具体是一个什么样的语言,也get到了它的安装方式,成功安装到自己的系统上了.今天让我们来一同编写之前我们演示过的一些拓展让我们来一同动起手来尝试一下. 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##1. 第一个拓展## Zephir和这本书(官方文档和此译文讲解)的目的是为PHP开发人员想要用较低的复杂性创建c扩展。 假设你有一个或多个其他编程语言的经验,我们将指出zephit和PHP中,C、Javascript和其他语言有很多相似的特性,以及新的或不同的许多特性。 如果你已经成功安装Zephir,你必须能够在您的控制台执行以下命令: $ zephir help 如果一切都好,你应该在你的屏幕上看到以下帮助信息. ###1.1 扩展框架### 我们要做的第一件事就是生成一个扩展框架,这将提供给我们扩展的基本 我们需要开始工作的结构。 在我们的例子中,我们将创建一个扩展名为“utils”: $ zephir init

使用5种编程语言开发PHP扩展

这一生的挚爱 提交于 2019-12-03 07:57:48
1. 使用C语言开发 介绍参考链接:http://blog.csdn.net/heiyeshuwu/article/details/44267021 https://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/ 2. 使用C++语言开发 介绍参考链接:https://github.com/Qihoo360/zendAPI http://blog.sina.com.cn/s/blog_532f78a40100qqnr.html 3. 使用Zephir语言开发 介绍参考链接:https://zephir-lang.com/ https://segmentfault.com/a/1190000002812601 http://jspphp.psmeimei.com/?p=609 4. 使用Nim语言开发 介绍参考链接:https://github.com/metatexx/nimzend 5. 使用Rust语言开发 介绍参考链接:https://github.com/hjr3/rust-php-ext http://www.csdn.net/article/2015-09-07/2825636 http://developer.51cto.com/art/201504/473096

zephir-(6)运算符

▼魔方 西西 提交于 2019-12-03 07:57:35
#zephir-运算符# ##前言## 先在这里感谢各位zephir开源技术提供者 了解的动态变量和静态变量之后我们今天来了解一下在编码工作中至关重要的运算符在zephir中的使用,已经一些特殊函数对空的验证等等之类操作的讲解. 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##1. 运算符## Zephir运算符类似于PHP的,也继承了他们的一些行为。 ###1.1 算术运算符### 支持以下操作: 操作 例子 取反 - a 加法 a + b 减法 a - b 乘法 a * b 除法 a / b 取模 % b ###1.2 比较运算符### 比较运算符的类型取决于变量相比,例如,如果两个操作数是动态变量相比PHP的行为是一样的: a == 平等的 真的如果a等于b在杂耍类型。 == b 相同的 真如果a = b,它们是相同的类型。 a! = b 不平等的 后如果不等于b类型杂耍。 < > b 不平等的 后如果不等于b类型杂耍。 a! == b 不完全相同 真的不等于b,或者他们不是同一类型的。 < b 小于 真正的如果是严格小于b。 a > 大于

zephir-(10)内置函数

空扰寡人 提交于 2019-12-03 07:57:23
#zephir-内置函数# ##前言## 先在这里感谢各位zephir开源技术提供者 嗨!大家好呀,今天要和大家一同学习zephir的内置函数,学过PHP的同学都知道,PHP的函数非常强大,当然这也是我们喜欢PHP的一个方面,但是如果想想这些函数都要你自己去实现呢,不仅很难而且实现不好对效率影响很大,当然zephir不会让大家来自己实现这些基础函数,接下来我们开始学习今天的知识把. 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##内置的方法## 如前所述,Zephir促进面向对象编程、变量与静态类型也可以作为对象处理。 比较这两个方法: public function binaryToHex(string! s) -> string { var o = "", n; char ch; for ch in range(0, strlen(s)) { let n = sprintf("%X", ch); if strlen(n) < 2 { let o .= "0" . n; } else { let o .= n; } } return o; } 和:

zephir-(4)基本语法

。_饼干妹妹 提交于 2019-12-03 07:57:08
#zephir-基本语法# ##前言## 先在这里感谢各位zephir开源技术提供者 每个语言都有它的语法,每个语言都有他的结构,那么今天就来和小编来讨论zephir的文件结构和命名空间,变量声明, 一些语法习惯,和一些其他的概念。 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##1. 基本语法结构## 在PHP中,您可以将任何文件中的代码没有一个特定的结构。但在Zephir中,每个文件必须包含一个类。每个类必须有一个名称空间和目录结构必须匹配,类的名称和名称空间配合使用。 ###1.1 文件结构和命名空间### 例如,给出下面的结构,每个文件都必须的类: mylibrary/ router/ exception.zep # MyLibrary\Router\Exception router.zep # MyLibrary\Router mylibrary / router.zep: namespace MyLibrary; class Router { } MyLibrary\Router\exception.zep: namespace

Zephir 文档翻译-类和对象

不问归期 提交于 2019-12-03 07:56:58
原文: Zephir类和对象 #类和对象 Zephir能够优化面向对象编程,通过使用Zephir能够让你把方法和类写入到PHP扩展中,从而避免常见的运行致命错误和警告,取而代之的是编译错误。 ##类 每一个Zephir文件必须实现一个且只能是一个类或者接口。Zephir的类接口跟PHP的类结构非常相似。 namespace Test; /** * This is a sample class */ class MyClass { } ##类定义 以下类的限定是被允许的: ###Final:这个类不允许被继承 namespace Test; /** * This class cannot be extended by another class */ final class MyClass { } ###Abstract:该类禁止被实例化 namespace Test; /** * This class cannot be instantiated */ abstract class MyClass { } ##编写方法 同PHP中一样,使用function关键字来定义类的方法,可以通过private、public、protected来定义方法的访问权限。 namespace Test; class MyClass { public function myPublicMethod()

zephir-(8)类和对象1

拥有回忆 提交于 2019-12-03 07:56:48
#zephir-类和对象1# ##前言## 先在这里感谢各位zephir开源技术提供者 zephir全面使用对象编程,这就是为什么拓展的使用方式只能是方法和类,你也将看到,大部分的时间,运行时错误引发异常,而不是致命错误或警告。今天讲一步步讲解zephir类方法变量范围等等的使用,希望大家喜欢. 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##Class## 每个Zephir文件必须实现一个类或一个接口(只能一个)。类的结构非常类似于PHP的一个类: namespace Test; /** * 这是一个示例类 */ class MyClass { } ##类的修饰符## 支持下面的类修饰符: Final:这个类不能被extended: namespace Test; /** * 他的类不能被另一个类extended */ final class MyClass { } Abstract:这个类不能被实例化: namespace Test; /** * 这个类不能被实例化 */ abstract class MyClass { } ##类的方法##

zephir-(2)安装和初体验

一笑奈何 提交于 2019-12-01 23:39:45
#zephir-安装和初体验# ##前言## 先在这里感谢各位zephir开源技术提供者 zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言。这是一个支持动态/静态类型的语言,熟悉PHP开发人员可以很好的进行开发。zephir这个名字的主要来源是**(Zend Engine/PHP/Intermediate)**,今天首先介绍zephir的安装,接着会对zephir进行一些语法上面的介绍,希望大家喜欢! 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##1. zephir安装## 安装Zephir,请遵循以下步骤: ###1.1 环境依赖### zephir主要依赖于下面环境 gcc >= 4.x/clang >= 3.x re2c 0.13或更高版本 gnu 3.81或更高版本 autoconf 2.31或更高版本 automake 1.14或更高版本 libpcre3 php开发工具-phpize 如果你使用Ubuntu,你可以安装所需要的包: $ sudo apt-get update $ sudo apt-get

zephir-(1)开篇介绍

落花浮王杯 提交于 2019-12-01 23:39:35
#zephir-开篇介绍# ##前言## 先在这里感谢各位zephir开源技术提供者 笔者在学习phalcon的过程中了解到,phalcon2.x版本通过了zephir重写,第一感觉是zephir这么牛逼?笔者赶紧尝试了一下,果不其然非常简单的就能写出一个C扩展的helloword,github上面有1000+个Star,紧接着我去搜索了一系列中文资料,但是比较失望,官方也没有提供中文文档,也没有中文社区,这么好东西这么好的技术,笔者觉得不能让他埋没,今天来开个坑,第一是对于官网的文档的一个译文工作,其次是结合自己的理解进行补充,希望大家喜欢! 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##1. zephir介绍## 那么今天的目的是什么,今天的目的不是告诉大家怎么用zephir编写PHP拓展,也不是zephir语法写那要写,中国有句老话 千里之行始于足下 我们先来简单的了解一下zephir他的特点和特性. ###1.1 简单易于开发### 相信大家和我有一样的经历,看到了yaf和phalcon在想为什么C语言的拓展框架可以这么的快

zephir-(7)数组

为君一笑 提交于 2019-12-01 23:39:16
#zephir-数组# ##前言## 先在这里感谢各位zephir开源技术提供者 在java和c++中几乎所有的操作都是正对于类开展的,但是在php中你们常用的处理类型是什么,当然是数组,在Zephir中提供了一种使用PHP数组的方法,那么今天就和笔者一起来学习zephir的数组相关的知识 注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术 附上: 喵了个咪的博客: w-blog.cn zephir官网地址: http://zephir-lang.com/ github地址: https://github.com/phalcon/zephir ##1. 数组## ###1.1 声明数组变量 ### 数组变量可以使用关键字声明“var”或“array”: var a = []; // 数组变量,其类型可以改变 array b = []; // 数组变量,类型不能改变 ###1.2 创建数组### 创建一个数组将它们的元素包含在方括号: //创建一个空数组 let elements = []; //创建一个数组元素 let elements = [1, 3, 4]; //创建一个数组元素的类型不同 let elements = ["first", 2, true]; //一个多维数组 let elements = [[0, 1], [4, 5], [2, 3]];