分12今回から数回にわたって,第4回までに作ったcvcapture拡張モジュールを改造していきます。単純なクラスを実装してみましょう。おさらいとクラス設計これまでのcvcapture拡張モジュールにはカメラまたは動画ファイルからリソースを作成する関数cv_create_camera_capture(),cv_create_camera_capture()と,リソースを引数にとってキャプチャした画像を保存する関数cv_create_camera_capture()があります。これを以下のPHPコードのようなイメージでクラス化してみましょう。}}specファイル定義リスト1のクラスをCodeGen_PECLのspecファイルで表すには,リスト2のように,ルート要素である<extension>の中に<class>要素,その中に<constant>,<property>,<function>を配置します。</class></extension>グローバル定数は<constants>要素の中に<constant>を配置しましたが,クラス定数の場合は<class>の中に直接<constant>を配置します。プロパティは<property>要素で指定します。ここではname属性とaccess属性だけを使っていますが,type属性とvalue属性でデフォルト値を指定することもできます。メソッドはグローバル関数と同じ<function>要素で指定しますが,access属性でアクセシビリティを指定できるほか,abstract="yes",final="yes",static="yes"の指定もできます。abstract/final属性はクラスに,static属性はプロパティにもつけられます。リスト1のプロトタイプでは便宜上コンストラクタを書いていますが,CvCaptureクラスではcreateCameraCapture()/createFileCapture()の中でコンストラクタ相当の処理もするように実装する計画なのでspecファイルにはコンストラクタを書いていません。コンストラクタを定義したい場合は,単にメソッド名を“⁠__construct⁠”にするだけで,特別な指定は必要ありません(※1⁠)⁠。※1デストラクタも同じく“⁠__destruct⁠”です。ソースコードを生成するではこれまで通りpecl-genコマンドでソースコードを生成しましょう(※2⁠)⁠。instructions.今回は動作するコードを実装する前に,生成されたソースコードcvcapture.cからCvCaptureクラスに関係する箇所を先頭から見ていきましょう。※2php.iniの設定によってはNoticeが出ますが,これはCodeGen_PECLのバグです。ソースコードを読む:クラス情報まずは59行目に以下のような記述がありました。NULL;zend_class_entryはPHPのクラスを定義する構造体で,CvCapture_ce_ptrにはCvCaptureクラスの情報が格納されます。ここでいったんPHP本体のソースコードからzvalの定義を見直してみましょう。*が格納されています。値がCvCaptureオブジェクトとなるのです。著者プロフィール関山隆介(せきやまりゅうすけ)ジンガジャパン株式会社に所属。PHP拡張モジュールを作った数なら(たぶん)日本一。5.3に対応したものはPEARチャンネルとGitHubで公開中。直前レポート『PHPライブラリ&サンプル実践活用[厳選100]』,Kindleストア・楽天Koboにて販売開始。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。