2.zephir基础语法

首先,zephir的代码必须放在一个类中,一个文件必须并且只能包含一个类,类必须位于命名空间下。

文件结构

mylibrary/
        router/
                exception.zep # MyLibrary\Router\Exception
        router.zep # MyLibrary\Router





其中router.zep和exception.zep就是代码文件(你可以想象,把.zep换成.php):

先来看Router类,打开router.zep,显示如下:


namespace MyLibrary;

class Router
{

}



而router/exception.zep的代码如下:



namespace MyLibrary\Router;

class Router extends Exception
{

}



到目前为止,语法跟php完全一样,很容易掌握吧。


跟php/c/c++/java一样,zephir也是用 ";"作为语句的终止符,你可以像这样书写:


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



注:可以看到zephir里的变量是没有"$"开头的,在php中应该是$myObject->myMethod(),这是一个区别。


注释也是用//和/**/,这里不再废话。

声明变量

和php不一样,在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;



变量只在声明它的方法内有效,这点和php一致,不再废话。
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;
    }

}



超全局变量

zephir不支持php那样的全局变量,但是可以像php那样获取超全局变量,如$_GET $_POST $_SERVER等,语法上如下:

//从$_POST中获取price参数
let price = _POST["price"];

//从 $_SERVER 中获取
let requestMethod = _SERVER["REQUEST_METHOD"];



如你所见,变量赋值用的是let语句,当然你必须提前声明变量。


你可能感兴趣的:(2.zephir基础语法)