説明

ColdFusion サーバー上にデプロイされたオブジェクトに関連するメタデータ(コンポーネントのメソッド、プロパティ、パラメータなど)を取得します。

戻り値

構造化されたメタデータ情報:ColdFusion コンポーネント(CFC)およびユーザー定義関数(UDF)の場合は、構造体。クエリーオブジェクトの場合は、構造体の配列。

カテゴリ

関数のシンタックス

GetMetaData(object)

関連項目

履歴

ColdFusion(2018 リリース)アップデート 5:

  • Array.getmetadata() は、新しいキー dimensions.を含んだ構造体を返します。
  • 配列のデータ型がコンポーネントの場合、datatype キーはそのコンポーネントの完全修飾パスを生成します。

ColdFusion MX 7:クエリーオブジェクトのメタデータを取得できるようになりました。
ColdFusion MX:この関数が追加されました。

パラメーター

パラメーター 説明
オブジェクト ColdFusion コンポーネント、ユーザー定義関数、またはクエリーオブジェクトです。CFC 内では、このパラメータを使用して This スコープを指定することもできます。

使用方法

この関数は、アプリケーションデータに関する情報を提供し、オブジェクトの構造体およびその使用方法をアプリケーションでダイナミックに確定できるようにします。この関数は、CFC およびクエリーオブジェクトに役立ちます。CFC のメタデータは、コンポーネントに関する情報、その関数、引数、およびプロパティに関する情報などです。getMetaData 関数は、CFC の一部ではないユーザー定義関数のメタデータも返します。まだインスタンス化していない CFC 定義、または ColdFusion インターフェイスに関する情報を取得するには、GetComponentMetaData 関数を使用します。次の表に、この関数から返されるデータを、サポートされているオブジェクトタイプ別に示します。

オブジェクト フィールド 説明
コンポーネント displayname cfcomponent タグのdisplayname 属性の値です(属性が存在する場合)。
  extends コンポーネントの祖先コンポーネントのメタデータです。他のコンポーネントを明示的に拡張しないコンポーネントは、WEB-INF.cftags.component を拡張します。
  fullname
cf_webroot(ColdFusion の Web ルート)からコンポーネントまでのドット区切りパスです。
  functions
コンポーネントの関数に関するメタデータ構造体の配列です。
  hint
cfcomponent タグのdisplayname 属性の値です(属性が存在する場合)。
  implements
コンポーネントが実装するインターフェイスのメタデータを含む構造体です。構造体のキーでインターフェイス名を指定し、値でインターフェイスのメタデータを含む構造体を指定します。
  name
Web ルートディレクトリ、ColdFusion Administrator の [カスタムタグのパス] ページに指定されているディレクトリなどのコンポーネント検索ルートからのピリオド区切りのパスを含む、コンポーネント名です。
  output
cfcomponent タグの output 属性の値です(属性が存在する場合)。
  path コンポーネントの絶対パスです。
  properties
コンポーネントの cfproperty タグで指定されたメタデータを含んだ構造体の配列です(このタグが存在する場合)。
  type
常にコンポーネントです。
  userMetadata
cfcomponent タグに含まれるユーザー指定の属性です。
関数 access cffunction タグの access 属性の値です(属性が存在する場合)。
  displayname
cffunction タグのdisplayname 属性の値です(属性が存在する場合)。
  hint
cffunction タグの hint 属性の値です(属性が存在する場合)。
  name
関数名です。
  output
cffunction タグの output 属性の値です(属性が存在する場合)。
  parameters 関数のパラメータに関するメタデータを含む構造体の配列です。
  returnformat リモートの呼び出し元に返される値の形式です。この属性は、ローカルの呼び出し元に返される値の形式には影響しません。
  returntype
cffunction タグのreturntype 属性の値です(属性が存在する場合)。
  roles cffunction タグの output 属性の値です(属性が存在する場合)。
  userMetadata cffunction タグに含まれるユーザー指定の属性です。
パラメータまたはプロパティ default cfargument または cfproperty タグの default 属性の値です(属性が存在する場合)。
  displayname cffunction タグのdisplayname 属性の値です(属性が存在する場合)。
  hint cfargument または cfproperty タグの hint 属性の値です(属性が存在する場合)。
  name 関数のパラメータまたは CFC プロパティの名前です。
  required cfargument または cfproperty タグの required属性の値です 属性が存在する場合)。
  type cfargument または cfproperty タグの type 属性の値です(属性が存在する場合)。
  userMetadata argument タグに含まれるユーザー指定の属性です。
クエリ IsCaseSensitive 文字データの大文字と小文字を正しく指定する必要があるかどうかを指定するブール値です。
  name
列名です。
 

TypeName

SQL データ型です。型を指定しないで QueryNew でクエリーオブジェクトが作成される場合は、省略されます。
次のフィールドを含む構造体です。
コンポーネントの祖先コンポーネントのメタデータです。他のコンポーネントを明示的に拡張しないコンポーネントは、WEB-INF.cftags.component を拡張します。
コンポーネントの祖先コンポーネントのメタデータです。他のコンポーネントを明示的に拡張しないコンポーネントは、WEB-INF.cftags.component を拡張します。

メモ:This スコープを使用すると、CFC 内のコンポーネントメタデータにアクセスできます。This スコープは、実行時に、コンポーネント本体および CFC メソッドで使用できます。これを使用して、コンポーネントが有効な間に存在する変数の読み込みと書き込みを行います。

詳しくは、『ColdFusion アプリケーションの開発』のイントロスペクションによるコンポーネント情報の取得を参照してください。

次の例では、cfdump タグを使用して、ColdFusion コンポーネントブラウザで使用するユーティリティ CFC のメタデータを表示しています。また、cfdocexamplesデータベースの Employees テーブル内のフィールドの名前とデータ型も表示します。

<!--- Create an instance of the Component Explorer utilities CFC. 
and get its metadata ---> 
<cfscript> 
componentutils = createObject("component", "cfide.componentutils.utils"); 
utilmetadata = getMetaData(componentutils); 
</cfscript> 

<h4>Metadata for the CFC component utilities</h4> 
<cfdump var="#utilmetadata#"> 

<!--- use GetMetadata to get the names and data types of the fields in the 
cfdocexamples Employees table ---> 
<cfquery name="getemployees" datasource="cfdocexamples"> 
SELECT * 
FROM Employees 
</cfquery> 
<cfset employeemeta=getMetaData(getemployees)> 

<h4>The Employees table has the following columns</h4> 
<cfloop index="i" from="1" to="#arrayLen(employeemeta)#"> 
<cfoutput> 
#employeemeta[i].name# #employeemeta[i].TypeName# #employeemeta[i].isCaseSensitive#<br> 
</cfoutput> 
</cfloop>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー