SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Delphi for PHPでコンポーネントを作成する(AD)

Delphi for PHP でコンポーネントを作成する(その2)

Delphi for PHPのビジュアル開発で利用できるコンポーネントを自作

  • X ポスト
  • このエントリーをはてなブックマークに追加

Delphi for PHPは、ドラッグ&ドロップのビジュアル操作でPHP Webアプリケーションを開発できるツール。前回の記事で作成した自作コンポーネントCSSChartに、データベースアクセス機能を追加します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

自作コンポーネントにデータアクセス機能を追加する

 前回の記事では、Delphi for PHPのコンポーネントを開発する手順を見てきました。今回は、CSSChartコンポーネントをDatasourceに接続させることにより、もう少しスパイス(機能)を追加してみようと思います。

 これにより、作成したコンポーネントは、DatasourceコンポーネントにアタッチしたあらゆるDatasetからの情報を表現できるようになります。そのような情報を読み込み、それに対するインターフェースを提供するDatasetであれば、データベースやメモリ配列やXMLファイルなどから情報を得られます。

 VCL for PHPのデータベースアクセススキームの開発では、VCL for Windowsに見られるものと同様のロジックに従いました。ですから、Delphi for Windowsのユーザーであれば、それらのコンセプトにはなじみがあるでしょう。

前回の記事

プロパティの追加

 コンポーネントが動作するには、3つのプロパティを追加する必要があります。

  • Datasource…あらゆる情報の提供元に接続します
  • LabelsColumn…チャートのラベルを格納しているデータソースにおけるカラム名
  • ValuesColumn…チャートの値を格納しているデータソースにおけるカラム名

 [編集|Publishedプロパティの追加]を利用して、以下のコードが得られます。

protected $_datasource = null;
function getDatasource() { return $this->_datasource; }
function setDatasource($value) { $this->_datasource = $value; }
function defaultDatasource() { return null; }

protected $_labelscolumn = "";
function getLabelsColumn() { return $this->_labelscolumn; }
function setLabelsColumn($value) { $this->_labelscolumn = $value; }
function defaultLabelsColumn() { return ""; }

protected $_valuescolumn = "";
function getValuesColumn() { return $this->_valuescolumn; }
function setValuesColumn($value) { $this->_valuescolumn = $value; }
function defaultValuesColumn() { return ""; }

オブジェクトプロパティと解決(Fixing Up)

 オブジェクトプロパティとは、あるコンポーネントへの参照を行うプロパティです。PHPには、(簡単に言えば)データ型はありません。そのため、すべてのプロパティはIDEによって文字列として処理され、.xml.phpのリソースファイルに文字列として格納されます。

 オブジェクトになり得るプロパティを文字列からオブジェクトへと変換するには、プロパティが適切な値を保持するのを保証する「解決(Fixing Up)」と呼ばれる追加の手順が必要になります。

 最初に行うのは、その機能のためにセッター(setter)を変更することです。

function setDatasource($value) { 
    $this->_datasource = $this->fixupProperty($value); }

 これにより、常に$this->_datasourceが適切な時点で適切な値を保持するようになります。また、このプロパティに適切な値を設定するために、フォームがロードされた時にこのメソッドを呼び出す必要があります。これは、loaded()メソッドをオーバーライドすることで可能です。

function loaded()
{
  parent::loaded();
  $this->setDataSource($this->_datasource);
}

 ここで、パッケージをアンインストール/インストールすると、新しいプロパティがオブジェクトインスペクタに表示され、DatasourceプロパティにあらゆるDatasourceコンポーネントをアタッチできます。このコンポーネントにプロパティを追加するのに、これ以上のことは必要ありません。

次のページ
Datasourceのデータを使用する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Delphi for PHPでコンポーネントを作成する連載記事一覧
この記事の著者

EDN編集部(イーディーエヌ編集部)

エンバカデロ・デベロッパーネットワーク(EDN)は、ソフトウェア開発者とデータベース技術者のための技術情報サイトです。Delphi、C++Builderをはじめとする開発ツールやER/Studioなどのデータベースツールに関連する技術記事、ビデオなどを提供しています。EDN編集部は、EDN記事と連携...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

José León Serna(José León Serna)

Delphi for WIndowsの最初のバージョンから、メインの開発ツールとして採用し、1998年より開発ツールビジネスに関わってきて、現在は、Delphi for PHPのプリンシパル・アーキテクチャを務めています。PHPを使いはじめたのは、バージョン4からで、Delphi for PHPが、...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2531 2008/08/20 13:35

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング