#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開發人員: