PHPまたはすべての拡張機能はZephir'eにあります

画像 おそらくすべてのPHP開発者(およびPHPだけでなく)には夢があります-独自のPHP拡張機能を定義することは、定義上、解釈されたコードよりも速く動作しますが、Zend Engineの複雑さを掘り下げることはなく、C ++を知らなくてもよいことです。 そして今、夢が叶う日が近づいています。 Zephirと呼ばれる非常に興味深いプログラミング言語についてお話したいと思います。 読むのが面倒な人には、 サイトにアクセスして指示に従ってください。拡張機能の書き方と、この道で発生する落とし穴についてお話します。



Zephirとは何ですか? Zephirは、タイプ(タイピング)とセキュリティに重点を置いて、PHPの拡張機能を迅速かつ簡単に作成するためのオープンソースの高レベルプログラミング言語です。 その構文は、PHP自体に非常に似ています。

それでは始めましょう。 まず、不足しているコンポーネントをインストールする必要があります。

$ sudo apt-get install php5-dev re2c libjson0-dev 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"}
      
      





注意!



今こそ、私たちの創造を試す時です。 私たちはまだ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でのすべてのコメントと修正。



All Articles