1
0
mirror of https://github.com/php/doc-ja.git synced 2026-04-25 17:08:10 +02:00
Files
archived-doc-ja/reference/com/variant.xml
T
TAKAGI Masahiro 85184370c2 Update EN-Revision.
git-svn-id: https://svn.php.net/repository/phpdoc/ja/trunk@325220 c90b9560-bf6c-de11-be94-00142212c4b1
2012-04-16 11:01:17 +00:00

159 lines
6.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 84b8fca68fc762fefe85acde180a38b2e77a28b9 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi -->
<phpdoc:classref xmlns:phpdoc="http://php.net/ns/phpdoc" xml:id="class.variant" xmlns="http://docbook.org/ns/docbook">
<titleabbrev>VARIANT</titleabbrev>
<title>VARIANT クラス</title>
<partintro>
<section xml:id="class.variant.class">
<title>説明</title>
<simpara>
VARIANT は、PHP の zval と同等の COM の値です。構造体形式になっており、
異なる型の値を含めることが可能です。COM 拡張モジュールが提供する
VARIANT クラスによって、PHP と COM の間のデータの受け渡しを制御できるように
なります。
</simpara>
<simpara>
<literal>$vVar = new VARIANT($var)</literal>
</simpara>
</section>
<section xml:id="variant.variant">
<title>メソッド</title>
<methodsynopsis>
<methodname>VARIANT::VARIANT</methodname>
<methodparam choice="opt"><type>mixed</type><parameter>value</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>type</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>codepage</parameter></methodparam>
</methodsynopsis>
<para>
VARIANT クラスのコンストラクタ。パラメータは以下のとおりです。
<variablelist>
<varlistentry><term>value</term>
<listitem>
<simpara>
初期値。省略したり &null; を設定した場合には、VT_EMPTY
オブジェクトが作成されます。
</simpara>
</listitem>
</varlistentry>
<varlistentry><term>type</term>
<listitem>
<simpara>
VARIANT オブジェクトの content 型を指定します。使用可能な値は、
<constant>VT_XXX</constant> <xref linkend="com.constants"/>
のうちのひとつです。
</simpara>
<simpara>
PHP 5 より前のバージョンでは、<parameter>type</parameter>
<constant>VT_BYREF</constant> を加えることで PHP から variant
オブジェクトに参照渡しをさせることが可能でした。PHP 5 では、
この方法はサポートされていません。そのかわりに、PHP 5 では
パラメータが参照渡しされた場合にそれを自動的に認識します。
VARIANT オブジェクトとして渡す必要さえありません。
</simpara>
<simpara>
VARIANT 型についてのその他の情報については、<acronym>MSDN</acronym>
ライブラリを参照ください。
</simpara>
</listitem>
</varlistentry>
<varlistentry><term>codepage</term>
<listitem>
<simpara>
文字列を unicode に変換する際に使用するコードページを指定します。
詳細な情報については、
<xref linkend="class.com"/> クラスの同名のパラメータを参照ください。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
PHP 5 より前のバージョンでは、VARIANT クラスのインスタンスには
多くの(ドキュメント化されていない)仮想プロパティが存在します。
これらのプロパティは PHP 5 ですべて削除され、かわりにより自然な構文で
アクセスできるようになっています。これらの違いについて、以下の例で
説明します。
</para>
<para>
<example xml:id="com.variant.example.php4">
<title>PHP 4.x 形式 での Variant の例</title>
<programlisting role="php">
<![CDATA[
<?php
$v = new VARIANT(42);
print "The type is " . $v->type . "<br/>";
print "The value is " . $v->value . "<br/>";
?>
]]>
</programlisting>
</example>
</para>
<para>
<example xml:id="com.variant.example.php5">
<title>PHP 5 形式での Variant の例</title>
<programlisting role="php">
<![CDATA[
<?php
$v = new VARIANT(42);
print "The type is " . variant_get_type($v) . "<br/>";
print "The value is " . $v . "<br/>";
?>
]]>
</programlisting>
</example>
</para>
<para>
このように変更された理由は、内部的には、COM 拡張モジュールが
VARIANT、COM および DOTNET クラスを同一のものとして扱い、これらの
クラスのプロパティやメンバへのアクセスは(何のインターフェイスも
経由せず)直接 COM とやり取りを行うようにするという設計思想によるものです。
新しい構文は、より自然でより手軽です。また、削除された仮想プロパティの
ほとんどは、PHP のコンテキストにおいては何の意味も持たないものでした。
</para>
<note>
<para>
PHP 5 では、VARIANT を扱うためのよりシンプルな手段をとっています。
値を返したり variant プロパティを取得したりする際に variant が
PHP の値に変換されるのは、情報を失うことなく型変換ができる型が
存在する場合に限られます。それ以外の場合は、結果は VARIANT クラスの
インスタンスとして返されます。明示的にキャスト演算子を指定することで
variant を PHP のネイティブ型として扱うことが可能です。また、
<function>print</function>
を使用すると、暗黙のうちに値が文字列に
変換されます。variant に対する計算のためのさまざまな関数が用意されており、
型変換でデータを失うリスクを犯さなくてもそのままの形式で計算を
行うことが可能です。
</para>
</note>
<para>
<function>variant_get_type</function> も参照ください。
</para>
</section>
</partintro>
</phpdoc:classref>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->