zephirの変数のついて

どうも、こんにちは。
最近zephirを触ってるんですけど、zephirの仕様について学んだことを書きます。

zephirで変数を使用するには宣言が必要です。コンパイラっぽいですねぇ

宣言

一行にまとめて

var a, b, c;

複数行で

var a;
var b;
var c;


宣言時に初期値の代入も可能です。

var a = "hello", b = 0, c = 1.0;
int d = 50, bool some = ture;

値のスコープ


変数の宣言はメソッド内で行わないといけないみたいです。

public function someMethod1()
{
    int a = 1, b = 2;
    return a + b;
}

ただし、メソッド外で変数宣言を行う場合は、アクセス修飾子のみつけて変数を宣言すれば大丈夫

class Router
{
  private s;
  protected t;
  public u;


その際に関数内で変数を使用するにはthisをつけて使用します。
また変数に値を代入するときはletを付ける必要みたいです。

public function __construct(int a)
{
  let this->t = a;
}


さらにzephirではPHPのスーパーグローバル変数を使用することができる

public function Get(string g)
{
    return _GET[g];
}

public function Server(string g)
{
    return _SERVER[g];
}


型について

ダイナミックタイプ

varはPHPの変数と同じふるまいをしてくれて、値を型を気にせずに自由に代入することが可能です。

public function someMethod2()
{
    var a = "Hello";
    var res;
    let res = a;
    let res = res . " World";
    let res = 10;
    return res;
}

ダイナミックタイプで使用できる型 float double string array object resource null

boolean
integer
float
double
string
array
object
resource
null

スタティックタイプ

スタティックタイプは変数宣言時に型を宣言し、その型にそった値しか代入することができません。 スタティックタイプで宣言できる型

boolean
integer
unsigned integer
char
unsigned char
long
unsigned long
float
double
string
array

簡単ではありますが、zephirの変数の利用と仕様についてでした。