変換機能

注釈

変換機能を使用するには、 phpMyAdmin 環境保管領域 を設定する必要があります。

はじめに

変換機能を有効にするには、 column_info テーブルと、適切な設定項目を設定する必要があります。手順については 設定 をご覧ください。

phpMyAdmin には2種類の変換があります。ブラウザ表示変換は、 phpMyAdmin で閲覧した際にデータがどのように表示されるかにのみ影響を与えるもので、入力変換は phpMyAdmin で挿入される前の値に影響を与えるものです。各カラムの内容には異なる変換を適用することができます。それぞれの変換には、保存されたデータにどのように影響を与えるかを定義するオプションがあります。

例えば、ファイル名を入れる filename というカラムがあるとします。ふつう phpMyAdmin ではファイル名しか表示されませんが、表示変換機能を使うと、このファイル名を HTML リンクに変換できます。 phpMyAdmin の構造の中でそのカラムのリンクをクリックすると、新しいブラウザウインドウにそのファイルが表示されます。変換オプションを使えば、その文字列の前後に付け加える文字列や、出力を保存する形式も指定できます。

利用可能なすべての変換とそのオプションの一般的な概要については、既存のカラムの 変更 リンクをクリックするか、新しいカラムを作成するためのダイアログを開いてください。どちらの場合もカラム構造のページには「ブラウザ表示変換」と「入力変換」のリンクがあり、お使いのシステムで利用可能な各変換についての詳細な情報が表示されます。

変換機能の効果的な使い方のチュートリアルについては、phpMyAdmin の公式ホームページの Link の節 をご覧ください。

使い方

テーブルの構造ページに移動してください (テーブルの [構造] リンクをクリックするとたどり着きます)。 [変更] (または変更アイコン) をクリックすると、項目の最後の方に変換に関する新しいフィールドが5つ表示されます。それぞれ「 メディア型 」、「ブラウザ表示変換」、「変換オプション」と呼ばれています。

  • メディア型 」の項目はドロップダウンになっています。カラムの内容に対応した メディア型 を選択してください。なお、多くの変換機能は メディア型 を選択しないと有効にならないので注意してください。
  • [ブラウザ表示変換] はドロップダウンフィールドです。定義済みの変換を、数が増えていることを期待しつつ選択することができます。独自の変換を作成する方法については、以下を参照してください。変換機能にはグローバルなものと、 MIME タイプに結びつけられたものとがあります。グローバルな変換機能はどの MIME タイプでも利用できます。必要に応じて、 MIME タイプが考慮されます。 MIME タイプに結びつけられた変換機能は、ふつう特定の MIME タイプのみ ('image' など) を操作します。 MIME の主タイプを操作するものはたいていサブタイプを考慮に入れますが、特定のサブタイプ ('image/jpeg' など) のみを操作するものもあります。関数が定義されていない MIME タイプでも変換を使用することができます。正しい変換を選択したかどうかのセキュリティチェックはありませんので、出力がどのようになるかは注意してください。
  • [ブラウザ表示変換オプション] フィールドは、自由入力のテキストフィールドです。ここには変換機能固有のオプションを入力する必要があります。通常、変換はデフォルトのオプションで動作しますが、一般的には概要を見てどのオプションが必要なのかを確認すると良いでしょう。 ENUM/SET フィールドと同様に、複数のオプションは 'a','b','c',... (空白がないことに注意) という形式で分割しなければなりません。これは、内部的にはオプションが配列として解析され、最初の値が配列の最初の要素になるためです。 MIME の文字セットを指定したい場合は、 transformation_options で定義することができます。これは、特定の MIME 変換の事前に定義されたオプションの外側に、セットの最後の値として置かなければなりません。 "'; charset=XXX'" という形式を使用してください。2つのオプションを指定できる変換を使用していて、文字セットを追加したい場合は、 "'最初のパラメータ','次のパラメータ','charset=us-ascii'" のように入力してください。ただし、 "'','','charset =us-ascii'" のようにパラメータはデフォルトのままでも構いません。デフォルトのオプションは $cfg['DefaultTransformations'] で設定できます。
  • 「入力変換」は、上記の「ブラウザ表示変換」の操作に厳密に対応する別のドロップダウンメニューですが、データベースに挿入する前のデータに影響を与えます。これらは、特殊なエディタ (例えば、 phpMyAdmin SQL エディタインターフェイスの使用) やセレクタ (画像をアップロードするためなど) を提供するために最も一般的に使用されます。 IPv4 アドレスをバイナリに変換したり、正規表現を使ってデータを解析するなどの操作も可能です。
  • 最後に、「入力変換オプション」は、上記の「ブラウザ表示変換オプション」のセクションに相当し、オプションと必須のパラメータを入力する場所です。

ファイル構造

All specific transformations for mimetypes are defined through class files in the directory src/Plugins/Transformations/. Each of them extends a certain transformation abstract class declared in src/Plugins/Transformations/Abs.

これらはカスタマイズを容易にし、新規または独自の変換を簡単に追加できるようにするために、ファイルに保存します。

ユーザが独自の MIME タイプを入力することはできませんが、そのために変換機能はいつでも確実に動作することができます。ある変換機能に未知の MIME タイプを適用しようとしても、変換関数は処理の方法を知らないので意味がありません。

There is a file called src/Plugins/Transformations.php that provides some basic functions which can be included by any other transform function.

ファイル名の規則は [Mimetype]_[Subtype]_[Transformation Name].php ですが、それが拡張する抽象クラスの名前は [Transformation Name]TransformationsPlugin です。変換プラグインで実装する必要のあるすべてのメソッドは次のとおりです。

  1. メインクラスの getMIMEType() および getMIMESubtype();
  2. 継承した抽象クラスの getName(), getInfo(), applyTransformation()。

getMIMEType(), getMIMESubtype(), getName() の各メソッドはそれぞれ MIME タイプ、 MIME サブタイプ、変換の名前を返します。 getInfo() は変換の説明と受け取る可能性があるオプションを返し、 applyTransformation() は変換プラグインの実際の作業を行うメソッドです。

Please see the src/Plugins/Transformations/TEMPLATE and src/Plugins/Transformations/TEMPLATE_ABSTRACT files for adding your own transformation plug-in. You can also generate a new transformation plug-in (with or without the abstract transformation class), by using scripts/transformations_generator_plugin.sh or scripts/transformations_generator_main_class.sh.

applyTransformation() メソッドには常に 3 つの変数が渡されます。

  1. $buffer - カラム内のテキストが入ります。これが変換するテキストになります。
  2. $options - ユーザから変換関数に渡されたオプションが配列として入ります。
  3. $meta - カラムについての情報を持つオブジェクトが入ります。データは mysql_fetch_field() 関数の出力から抽出されます。そのため、この関数の マニュアルページ で説明されているオブジェクトのプロパティすべてが利用できますし、 unsigned/zerofill/not_null/... といったプロパティによってカラムを変換することもできます。変数 $meta->mimetype には、カラムの元の メディア型 が入ります。 (すなわち 'text/plain', 'image/jpeg' など)