Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/05/23 16:45

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

目次

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

 前回の記事では、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コンポーネントをアタッチできます。このコンポーネントにプロパティを追加するのに、これ以上のことは必要ありません。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 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が、...

バックナンバー

連載:Delphi for PHPでコンポーネントを作成する
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5