![画像](https://habrastorage.org/getpro/habr/post_images/d00/0a4/b6b/d000a4b6bb4929e64cb0085397c6c0ca.jpg)
Zephirとは何ですか? Zephirは、タイプ(タイピング)とセキュリティに重点を置いて、PHPの拡張機能を迅速かつ簡単に作成するためのオープンソースの高レベルプログラミング言語です。 その構文は、PHP自体に非常に似ています。
それでは始めましょう。 まず、不足しているコンポーネントをインストールする必要があります。
$ sudo apt-get install php5-dev re2c libjson0-dev libpcre3-dev
- php5-dev-拡張機能開発用のファイルパッケージ
- re2c-正規表現コンパイラ
- libjson0-dev-json形式で作業するためのライブラリヘッダー、json-cパッケージ
- libpcre3-dev-正規表現を操作するための機能を提供するライブラリのヘッダー
次に、リポジトリからクローンを作成します。
$ git clone https://github.com/phalcon/zephir.git
リポジトリ内のバージョンは常に安定しているわけではありません。コミット6eda047f512b6600cf8afc79348381c64198fcb5を使用しました。
Zephirを使用してディレクトリに移動し、拡張機能のすべてを構成します。 現在、リポジトリにはテスト拡張機能「test」があります-それはあまり気にしません。
$ cd zephir $ cp -r ext/ .ext/ $ mkdir app
拡張機能のクラスバージョンを作成する
$ nano app/version.zep
namespace App; class Version { public static function get() { return "0.0.1 super beta"; } }
config.json構成ファイルを調整します
$ nano config.json
{"namespace":"app"}
注意!
- 構成内の名前空間は、クラス内の名前空間であり、拡張子の並べ替えがあるディレクトリの名前でもあります。
- 拡張機能のクラスは、拡張機能の名前空間で始まる必要があります(たとえば、Test \ TestCaseは正しくありません)
- 各名前空間はディレクトリで表す必要があり、クラスには拡張子.zepのファイルが提供されます
- ラブケースの拡張機能のすべてのファイルとディレクトリ
今こそ、私たちの創造を試す時です。 私たちはまだzephirのルートディレクトリにいることを思い出してください。 ここで、zephirをデプロイし、拡張機能をコンパイルする必要があります。
$ sudo ./install $ sudo ./bin/zephir compile
その結果、ディレクトリ/ usr / lib / php5 / 20121212 /にapp.soライブラリがあります(PHPのバージョンによって異なります)。 PHPに接続する必要があります。 これを行うために、次のことを行います(cliの例ですが、特定の場合にこれらのアクションを再現できます)。
$ sudo nano /etc/php5/mods-available/app.ini
行を挿入
; configuration for php Our Awesome App module ; priority=50 extension=app.so
そしてリンク
$ sudo ln -s ../../mods-available/app.ini /etc/php5/cli/conf.d/50-app.ini
次は、最初の拡張機能を確認します。
$ php -r "echo App\Version::get() . PHP_EOL;"
そして、これらの素晴らしいラインを見ます:
0.0.1 super beta
拡張機能のコンパイル中に、欠落しているテストに関するメッセージが表示される場合があります。 Zephirには、コンパイルする前にテストを実行する機能があります。 サンプルテストはunit-testsディレクトリにあります。
PSケーキは本物です
PSS PMでのすべてのコメントと修正。