目次

前のトピック

< チュートリアル

次のトピック

型 >

このページ

基本構文

この章で、ファイルと名前空間の構成、変数の宣言、様々な構文の慣習、および2,3の他の概念を議論するつもりです。

ファイルと名前空間でのコードの構成

PHPでは、コードを特定の構造無しにどのファイルにでも配置することができます。Zephirでは、各ファイルはクラス(かつ、たった一つのクラス)を含む必要があります。各クラスは名前空間を持ち、ディレクトリ構造は使用しているクラスの名前と名前空間に一致する必要があります。

例えば、以下の構造を考えると、各ファイルのクラスは以下の通りでなければなりません:

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はもしファイルあるいはクラスが期待されたファイルに配置されていない場合に例外を上げるでしょう。逆もまた同様です。

分割の指示

以前の章でのコード例の中でセミコロンがほとんど無かったことに気づいたかも知れません。Java, C/C++, PHP および似たような言語のように、文および表現を分割するためにセミコロンを使うことができます:

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

コメント

Zephirは ‘C’/’C++’ のコメントをサポートします。// を使った1行のコメントと、/* ... */ を使った複数行のコメントです:

// これは1行コメントです

/**
 * 複数行コメント
 */

ほとんどの言語で、コメントは単にコンパイラ/インタプリタによって無視されるテキストです。Zephirでは、複数行コメントはdocblockとしても使われ、それらは生成されたコードにもエクスポートされます。つまり、それらは言語の一部です!

docblock が期待する場所に置かれていない場合、コンパイラは例外を投げるでしょう。

変数の宣言

Zephirでは、指定されたスコープ内で使われる全ての変数が宣言されなければなりません。この処理は最適化と検証を実施するためにコンパイラに重要な情報を与えます。変数はユニークな識別子でなければならなく、それらは予約語であってはなりません。

//同じ指示内で、同じ型についての変数を宣言
var a, b, c;

//異なる行内で、各変数を宣言
var a;
var b;
var c;

変数は任意で初期の互換性のあるデフォルト値を持つことができます。したい分だけ変数に新しい値を割り当てることができます:

//Declaring variables with default values
var a = "hello", b = 0, c = 1.0;
int d = 50; bool some = true;

変数名は大文字小文字を区別します。以下の変数は異なります:

//異なる変数
var somevalue, someValue, SomeValue;

変数のスコープ

宣言された全ての変数は宣言されたメソッドにローカルにスコープされます:

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のスーパー グローバルへアクセスすることができます:

//_POSTから値を取得
let price = _POST["price"];

//_SERVERから値を読み込み
let requestMethod = _SERVER["REQUEST_METHOD"];

ローカル シンボル テーブル

PHPの各メソッドおよびコンテキストは、とても動的な方法で変数を書き込むことができるシンボルテーブルを持ちます:



$b = 100;
$a = "b";
echo $$a; // prints 100

全ての変数が低レベルの変数へコンパイルされ、特定のコンテキスト内にどの変数が存在するかを知る方法が無いため、Zephirはこの機能を実装しません。現在のPHPシンボルテーブル内の変数を生成したい場合は、以下の構文を使うことができます:

//PHP内での変数 $name を設定
let {"name"} = "hello";

//PHP内での変数 $price を設定
let name = "price";
let {name} = 10.2;
TOP
inserted by FC2 system