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\Exceptionrouter.zep # MyLibrary\Router

mylibrary / router.zep:

namespace MyLibrary;class Router
{}

MyLibrary\Router\exception.zep:

namespace MyLibrary\Router;class Exception extends \Exception
{}

注意:Zephir如果文件或类不是位于预期的文件会提示编译器异常.

1.2 指令分离

您可能已经注意到,很少有分号出现在前一章中的代码示例。 您可以使用分号来分隔语句和表达式,如Java、C / c++、PHP和类似的语言:

myObject->myMethod(1, 2, 3); echo "world";

1.3 注释

Zephir支持“C”/“c++”注释,一行注释和//多行注释以/…… /:

// this is one line comment/*** multi-line comment*/

在大多数语言中,注释会被文本被编译器/解释器忽略。 在Zephir, 多行注释也用作docblocks,它会生成代码, 他们语言的一部分!

注意:如果不是docblock预计的结果编译器将抛出一个异常。

2 变量

2.1 变量声明

Zephir,必须声明所有变量用于给定的范围。 这个过程提供了重要的信息 编译器执行优化和验证。 变量必须是唯一的标识符,而且他们不能 保留字。

//声明变量的相同类型相同的指令
var a, b, c;//声明每个变量在不同的行
var a;
var b;
var c;

变量可以有一个初始默认值兼容,您可以指定一个新值到一个变量中:

//声明变量的默认值
var a = "hello", b = 0, c = 1.0;
int d = 50; bool some = true;

变量名是区分大小写的,下面的变量是不同的:

//不同的变量
var somevalue, someValue, SomeValue;

2.2 变量作用域

所有变量声明的局部作用域都是方法级别的:

namespace Test;class MyClass
{public function someMethod1(){int a = 1, b = 2;return a + b;}public function someMethod2(){int a = 3, b = 4;return a + b;}}

2.3 超级全局变量

Zephir不支持全局变量,从PHP用户访问全局变量是不允许的。 然而,您可以访问PHP的超全局变量如下:

//Getting a value from _POST
let price = _POST["price"];//Read a value from _SERVER
let requestMethod = _SERVER["REQUEST_METHOD"];

2.4 符号

每一个用PHP符号,并且允许写变量写在一个符号上面解析:

<?php$b = 100;
$a = "b";
echo $$a; // prints 100

Zephir没有实现这个功能,因为所有变量编译到低级变量 也没有办法知道哪些变量存在于一个特定的上下文。 如果你想创造 一个变量在当前的PHP符号表中,你可以使用下面的语法:

//设置在PHP变量$的名字
let {"name"} = "hello";//在PHP中设置变量$的值
let name = "price";
let {name} = 10.2;

3. 总结

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

今天我们主要了解了zephir的文件规范,已经变量注释符号这些特性,下一小节将会对类型进行详解,谢谢大家的支持

zephir技术交流:246348908 欢迎大家的加入!

感谢zephir开发人员:

zephir-基本语法相关推荐

  1. Zephir入门 —— 语法篇

    概述 Zephir的语法跟PHP很相似,所以这里不会把官网的文档照搬过来翻译一遍,而是会把一些Zephir相较于PHP比较特别的语法挑出来讲一下.如果想要要完整学习Zephir的语法,没有比官网的文档 ...

  2. zephir-安装和初体验

    zephir-安装和初体验 前言 先在这里感谢各位zephir开源技术提供者 zephir主要是解决了PHP开发人员尝试编写和编译PHP拓展所能执行的代码的语言.这是一个支持动态/静态类型的语言,熟悉 ...

  3. 【PHP 扩展开发】Zephir 基础篇

    上一篇 <Zephir 简介> 简单介绍了环境搭建,编写了一个的简单示例.这一篇继续介绍 Zephir 基础. 基本语法 Zephir 中,每个文件都必须有且只有一个类,每个类都必须有一个 ...

  4. zephir 开发项目_通过Zephir开发PHP扩展的入门

    zephir 开发项目 This tutorial will explain how to create a PHP extension using a new language: Zephir, w ...

  5. 【JavaScript总结】JavaScript语法基础:BOM

    DOM是文档对象模型,操作对象是文档 window.document,和浏览器没有直接关系 DOM常用事件: onload,onbeforeunload, onunload onclick,ondbl ...

  6. 【JavaScript总结】JavaScript语法基础:JS编码

    运算符 数学:+. -. *. / 逻辑:>. < .>= .<=. == . !=.&&.|| . === .!==(完全等于) 对象相关 new delet ...

  7. 【JavaScript总结】JavaScript语法基础:数据类型

    ------>数据类型有哪些? ->基本类型:数字类型,布尔类型,字符串类型 ->引用类型:对象类型,函数类型 ->空类型:null 和 undefined ->运算符: ...

  8. 第二天:Vue基础语法

    1.计算属性的setter和getter 每个计算属性都有setter和getter 一般来说用到setter较少,都不希望数据被改动,所以只用getter时也有缩写 <!DOCTYPE htm ...

  9. LLVM语法语义指令特性

    LLVM语法语义指令特性 High Level Structure Module Structure LLVM 程序由Module's组成,每个 's 是输入程序的一个翻译单元.每个模块由函数,全局变 ...

最新文章

  1. 【JS笔记】私有变量
  2. 微信小程序实现web端锚点功能
  3. Python教程:推荐一个比 open 读文件还好用、方便的库
  4. iOS的runtime运行时机制
  5. final关键字/abstract关键字
  6. 深入比特币原理(一)——比特币白皮书总结与点评
  7. python3 下载文件-使用Python 3从网上下载文件
  8. docker 定时重启脚本_定时启动docker容器
  9. 计算机科学与技术学科带头人,计算机专业学科带头人—陆玉昌教授
  10. 云服务到底是什么东西?
  11. 关于红色警戒2不能在Win1064位系统上运行的问题的解决
  12. 【Redis】Linux安装Redis步骤详细讲解,以及make、make install区别
  13. 雅思阅读--读书笔记
  14. Flak执行端口被占用OSError: [Errno 48] Address already in use
  15. LOAM算法(论文+代码)详解(一)—— 引言+特征提取
  16. 【转】吴宗宪最新内地版《我猜》超级搞笑语录
  17. 如何在 PHP 8.1 中使用枚举
  18. 蓝桥杯官网题2(含VIP试题且带详细解析!小白看过来!!
  19. pcb天线和纯铜天线_陶瓷天线和PCB天线以及IPEX天线三者间区别
  20. 关于AD软件的x/y按键无法水平旋转、垂直旋转的问题

热门文章

  1. 如何启用计算机睡眠功能,如何让电脑休眠_如何开启电脑休眠模式-win7之家
  2. 跟我一起做一个vue的小项目(九)
  3. 使用 VMware 安装 CentOS(一)
  4. iMindMap2020免费下载序列号
  5. C语言利用泰勒级数sin(X)
  6. 全面mysql初始化TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defau
  7. 三大运营商“下血本”!相约调整4G流量套餐,网友:还是觉得贵
  8. 云慧计算机有限公司触屏,工业平板电脑触摸屏使用注意事项
  9. Learning Angular 学习Angular Lynda课程中文字幕
  10. 按键精灵 网页操作插件