PHP extensionの作り方 5分でできるclassの作成
スポンサーリンク
このドキュメントの内容は、以下の通りです。
はじめに
CodeGen_PECL を利用して、クラスを実装してみます。
- [2013-02-17-1] PHP extensionの作り方 5分でできるHello world!
- [2013-02-18-1] PHP extensionの作り方 CodeGen_PECLを使ってC++で作る方法
- [2013-02-19-1] PHP extensionの作り方 配列を返す方法
- [2013-02-20-1] PHP extensionの作り方 配列の配列を返す方法
CodeGen_PECLのインストール
sudo pear install --alldeps CodeGen_PECL
XMLの準備
pecl-gen コマンドでソースコード類を生成します。pecl-genコマンドには、specファイルが必要です。
ファイル helloworld.xml
整数型のメンバ変数へのアクセスは、 PROP_GET_LONG/PROP_SET_LONG を利用します。
PROP_GET 系のマクロは、 /usr/local/share/pear/CodeGen/PECL/Extension.php に定義されています。
<?xml version="1.0" encoding="UTF-8"?>
<extension name="helloworld" version="1.0.0">
<summary>Hello, World!</summary>
<description><?data
This is my first PHP extension module.
?></description>
<maintainers>
<maintainer>
<user>kaoru</user>
<name>kaoru</name>
<email>kaoru@foo.com</email>
<role>lead</role>
</maintainer>
</maintainers>
<license>PHP</license>
<channel>__uri</channel>
<release>
<version>1.0.0</version>
<date>2013-02-16</date>
<state>stable</state>
<notes><?data
- Initial release.
?></notes>
</release>
<class name="MyClass">
<property name="x" access="public" type="int" value="0" />
<function name="__construct">
<proto>void __construct([int _x = 345])</proto>
<code>php_printf("Constructor: %d", PROP_GET_LONG(x) );
PROP_SET_LONG(x, _x);
</code>
</function>
<function name="foo">
<proto>int foo()</proto>
<code>RETURN_LONG( PROP_GET_LONG(x) );</code>
</function>
</class>
</extension>
スケルトンの生成
pecl-gen helloworld.xml
ビルド
cd helloworld phpize ./configure gmake
実行
php -d "extension=`pwd`/modules/helloworld.so" ./hello_class.php
** テスト用コード
<?php $x = new MyClass(); echo $x->foo(); ?>
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12