zephir-(4)基本语法
#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 # MyLibraryRouterException
router.zep # MyLibraryRouter
mylibrary / router.zep:
namespace MyLibrary;
class Router
{
}
MyLibraryRouterexception.zep:
namespace MyLibraryRouter;
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开发人员:
- HTTP协议状态码详解(HTTP Status Code)
- android 中resources管理
- 你不知道的javaScript笔记(4)
- Android网格视图(GridView)
- http响应Last-Modified和ETag以及asp.net web api实现
- 列表视图(ListView和ListActivity)
- 你不知道的javaScript笔记(3)
- 你不知道的javaScript笔记(2)
- WinRT:WebAuthenticationBroker For OAuth认证
- 你不知道的javaScript笔记(1)
- JQuery实现仿sina新浪微博新鲜事滚动
- 简单的jquery拖曵原理js特效实例
- 使用MiniProfiler调试ASP.NET MVC网站性能
- 大金主撑腰 4声母Mynt.com竟36万元结拍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flutter 中 Dart的Mixin示例详解
- Android Studio 实现九宫格功能
- Android user版通过adb_enable开启adb 调试 不提示对话框的流程分析
- Android实现圆线按钮进度效果
- Flutter 透明状态栏及字体颜色的设置方法
- Android实现带有进度条的按钮效果
- Android 自定义View实现多节点进度条功能
- android studio无法添加 bmob sdk依赖问题及解决方法
- Android自定义ToolBar并实现沉浸式的方法
- python初学者笔记—入门基础知识
- Android SurfaceView画板操作
- Android利用Andserver搭建服务器的详细教程
- 位运算处理进制转换问题
- python的to_sql那点儿事
- Android自定义控件之刻度尺控件