Help us understand the problem. What is going on with this article?

ZephirでPHPExtensionを作ってみる

More than 1 year has passed since last update.

公式マニュアルを参考に。
https://github.com/phalcon/zephir/blob/master/WINDOWS.md
事前にVisual Studio 2015をインストールしている必要があります。

PHP,PHP SDK,PHP Developer Pack,Zephirをインストールする

今回はx86バージョンを使用しています。
PHPディレクトリにPHP SDKPHP Developer PackZephirを配置する。

C:\php-7.2.10-Win32-VC15-x86
C:\php-7.2.10-Win32-VC15-x86\php-sdk
C:\php-7.2.10-Win32-VC15-x86\php-devel-pack
C:\php-7.2.10-Win32-VC15-x86\zephir

Zephir ParserをPHPに組み込む

php_zephir_parser.dllextにコピーして
zephir_parserphp.iniに追加する。

php.ini
extension=zephir_parser

コマンドプロンプトで環境変数を設定する

Winodwsの環境変数に登録しないようにしたいので、必要なパスをコマンドプロンプトから設定する。

# Visual Studio 2015 にパスを通す
set VS140COMNTOOLS="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\"
call %VS140COMNTOOLS%\VsDevCmd

# PHP,SDK,Develop,Zephirにパスを通す
set PHP_HOME=C:\php-7.2.10-Win32-VC15-x86
set PATH=%PATH%;%PHP_HOME%
set PHP_SDK=%PHP_HOME%\php-sdk
set PHP_DEVPACK=%PHP_HOME%\php-devel-pack
set PATH=%PATH%;%PHP_HOME%\zephir\bin

# SDKの環境変数を設定する
%PHP_SDK%\bin\phpsdk_setvars

これをバッチファイルにまとめておくと便利。

Zephirプロジェクトを作成してビルドする

zephir initでプロジェクトを作成する。

zephir init test

その配下のあるtestフォルダにsample.zepを作成する。

sample.zep
namespace Test;

class Sample
{
    public static function say()
    {
        echo "hello world!";
    }
 }

zephir buildでビルドする。

zephir build

プロジェクトのext\Release_TSにDLLが作成されるので、php.iniextensionを追加する。

php.ini
extension="C:\php-7.2.10-Win32-VC15-x86\test\ext\Release_TS\php_test.dll"

あとは確認用のスクリプトから実行されるかを確認する。

sample.php
<?php
Test\Sample::say();

hello world!が表示されたらok!

>php sample.php
hello world!
hiromaru
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away