#zephir-类型#php
##前言## 先在这里感谢各位zephir开源技术提供者git
Zephir既可使用动态类型也可使用静态类型,这是zephir独特的一点,今天笔者就来和你们一同了解zephir中的基本的类型使用.github
注:笔者水平有限,说的不正确的地方但愿你们多多指正,一同交流技术数组
附上:优化
喵了个咪的博客:w-blog.cnui
zephir官网地址:http://zephir-lang.com/.net
github地址:https://github.com/phalcon/zephircode
##1. 动态类型##blog
zephir的动态类型和PHP彻底同样,他们能够分配和从新分配 不一样类型没有限制。开发
一个动态变量必须用的var关键字来声明:
var a, b, c; // 初始化变量 let a = "hello", b = false; // 改变他们的值 let a = 10, b = "140"; // 进行运算操做 let c = a + b;
他们一共有八个类型:
类型 描述 boolean 一个boolean值表示一个值 它能够是“true”或“false”。 integer integer是数字。 一个integer的大小是与平台相关的。 float/double 一个float/double的大小是与平台相关的。 string string是一系列字符,每一个字符是一个字节。 array array是有序映射 object 相似PHP的object resource 引用的外部resource null 特殊的null值表示一个变量没有价值
查看更多关于这些类型的信息PHP手册
###boolean###
一个布尔值表示一个真值。 它能够是“真”或“假”:
var a = false, b = true;
###integer###
一个integer的大小是与平台相关的,(32位)最大值是两个十亿。64位平台最大值约为9e18。PHP不支持无符号整数因此Zephir有这个限制:
var a = 5, b = 10050;
整数溢出
与PHP同样Zephir自动检查整数溢出,不像在C若是你 作操做,可能返回一个很大的可使用类型,如“unsigned long”或“float” 存储:
unsigned long my_number = 2147483648;
###float/double###
浮点数(也称为“floats”,“doubles”,或“real numbers”)。 浮点常量表达式0个或多个数字,接着一个(.) 其次是0个或多个数字。浮动的大小 和平台相关,尽管最大的~ 1.8e308 精度大约14个小数位数是一种常见的值(64位IEEE格式)。
var number = 5.0, b = 0.014;
###string###
在Zephir,指定字符串只能使用双引号(好比在C),单引号将予以保留。
var today = "friday";
转义序列字符串:
序列 描述 \ t 空格 \ n 换行 r \ 回车 \ \ 反斜杠 \” 双引号 var today = "\tfriday\n\r", tomorrow = "\tsaturday";
Zephir能够和PHP同样经过.链接字符串
var name = "peter"; echo "hello: " . name;
###array###
在Zephir中的数组基本上和PHP中是同样的,定义数组的语法比在PHP中略有不一样:
//方括号内必须用于定义数组 let myArray = [1, 2, 3]; //双冒号必须用于定义哈希表的键 let myHash = ["first": 1, "second": 2, "third": 3];
###Objects###
Zephir容许实例化操做,调用方法,获取类的常量:
let myObject = new stdClass(), myObject->someProperty = "my value";
##2 静态类型##
静态类型容许开发者声明和使用某些类型的C变量.变量一旦声明为动态类型不能改变它们的类型。然而,静态类型会让编译器作一个更好的优化工做。将支持如下类型:
类型 描述 boolean 一个boolean值表示一个值 它能够是“true”或“false”。 integer 符号整数。大小至少为16位。 unsigned integer 无符号整数。大小至少为16位。 char 一样大小为char,但保证是无符号的。 unsigned char 一个float/double的大小是与平台相关的。 long 长带符号整数类型。大小至少为32位。 unsigned long 同长,但无符号。 float/double 双精度浮点类型。大小取决于平台 string string是一系列字符,其中一个角色是一个字节。 array 这可被用做散列,地图,字典,收集,堆等的结构
###boolean###
一个布尔值表示一个真值。 它能够是“true”或“false”。
boolean a; let a = true, a = 100, // 自动转化为真 a = null, // 自动转化为假 a = "hello"; // 抛出一个编译器异常
###Integer/Unsigned Integer###
整数类型
int a; let a = 50, a = -70, a = 100.25, // 自动转化到100 a = null, // 自动转化为0 a = false, // 自动转化为0 a = "hello"; // 抛出一个编译器异常
无符号整数就像整数可是他们没有标志,这意味着你不能存储 负数在这些类型的变量:
let a = 50, a = -70, // 自动转化到70
无符号整数大于两倍标准的整数,分配无符号整数到整数 可能表明数据丢失:
uint a, int b; let a = 2147483648, b = a, // 可能的数据丢失
###Long/Unsigned Long###
长变量是整数变量的三倍大,所以他们能够存储更大的数字,除了长度使用和Integer/Unsigned Integer并没有太多区别
###Char/Unsigned Char###
字符变量的最小的机器的可寻址单元能够包含基本的字符集。 每个字符的变量表明每个字符在字符串:
char ch, string name = "peter"; let ch = name[2]; // 得到 't' let ch = 'Z'; // 字符文本必须包含在简单的赋值
###String###
字符串是一系列的字符。在PHP中它只支持一组256个的字符, 所以不提供本地Unicode支持。
当一个变量声明字符串它不会改变它的类型:
string a; let a = "", a = "hello", //必须包含在双引号字符串 a = 'A', // 转换为字符串“A” a = null; // 自动变成”“
##3. 总结##
动态类型开发更方便,静态类型效率更高,固然zephir多种都支持,因此不管你是熟悉PHP多一些仍是C多一些,变量类型的时候都不会成为你的痛点,下节将介绍zephir中的运算符,多谢你们的支持!
注:笔者能力有限有说的不对的地方但愿你们可以指出,也但愿多多交流!
zephir技术交流:246348908 欢迎你们的加入!
感谢zephir开发人员: