#zephir-基本语法#php
##前言## 先在这里感谢各位zephir开源技术提供者c++
每一个语言都有它的语法,每一个语言都有他的结构,那么今天就来和小编来讨论zephir的文件结构和命名空间,变量声明, 一些语法习惯,和一些其余的概念。git
注:笔者水平有限,说的不正确的地方但愿你们多多指正,一同交流技术github
附上:优化
喵了个咪的博客:w-blog.cnthis
zephir官网地址:http://zephir-lang.com/spa
github地址:https://github.com/phalcon/zephircode
##1. 基本语法结构##router
在PHP中,您能够将任何文件中的代码没有一个特定的结构。但在Zephir中,每一个文件必须包含一个类。每一个类必须有一个名称空间和目录结构必须匹配,类的名称和名称空间配合使用。blog
###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 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开发人员: