mirror of
https://github.com/php/doc-ja.git
synced 2026-03-24 23:22:16 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/ja/trunk@311009 c90b9560-bf6c-de11-be94-00142212c4b1
153 lines
5.6 KiB
XML
153 lines
5.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 79dcbe011fb254dcd92c597064571fe313362a09 Maintainer: takagi Status: ready -->
|
|
<!-- CREDITS: hirokawa -->
|
|
|
|
<chapter xml:id="java.examples" xmlns="http://docbook.org/ns/docbook">
|
|
&reftitle.examples;
|
|
<section xml:id="java.examples-basic">
|
|
<title>基本的な使用法</title>
|
|
<para>
|
|
<example>
|
|
<title>Java の例</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Java クラス java.lang.System のインスタンスをPHPに作成する
|
|
$system = new Java('java.lang.System');
|
|
|
|
// プロパティへのアクセスのデモ
|
|
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
|
|
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
|
|
echo 'OS=' . $system->getProperty('os.name') . ' ' .
|
|
$system->getProperty('os.version') . ' on ' .
|
|
$system->getProperty('os.arch') . ' <br />';
|
|
|
|
// java.util.Dateの例
|
|
$formatter = new Java('java.text.SimpleDateFormat',
|
|
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");
|
|
|
|
echo $formatter->format(new Java('java.util.Date'));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>AWT Example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// この例は、CLI を使用して実行することのみを考慮しています。
|
|
|
|
$frame = new Java('java.awt.Frame', 'PHP');
|
|
$button = new Java('java.awt.Button', 'Hello Java World!');
|
|
|
|
$frame->add('North', $button);
|
|
$frame->validate();
|
|
$frame->pack();
|
|
$frame->visible = True;
|
|
|
|
$thread = new Java('java.lang.Thread');
|
|
$thread->sleep(10000);
|
|
|
|
$frame->dispose();
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
|
|
注意:
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
<literal>new Java()</literal> は、有効なコンストラクタがある場合、
|
|
クラスのインスタンスを生成します。引数が指定されない場合には、
|
|
デフォルトのコンストラクタにより
|
|
<literal>java.lang.System</literal>のようなクラスにアクセスすると
|
|
良いでしょう。このクラスは、ほとんどの機能を静的なメソッドとして
|
|
公開しています。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
あるインスタンスのメンバーにアクセスする際には、まず bean プロパティ
|
|
が探されてから、次に public フィールドが探されます。言い換えると、
|
|
<literal>print $date.time</literal> はまず
|
|
<literal>$date.getTime()</literal> と解釈され、続いて
|
|
<literal>$date.time</literal> と解釈されます。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
静的メンバおよびインスタンスメンバは共に同じ構文でアクセス可能です。
|
|
さらに、java オブジェクトが <literal>java.lang.Class</literal> 型の
|
|
場合、このクラスの静的メンバ(フィールドとメソッド)にアクセス可能です。
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
例外が発生すると PHP の警告が出力され、結果は &null; となります。警告は
|
|
"@" 記号を付けてメソッドをコールすることに抑圧できます。
|
|
直近のエラーを取得し、リセットするために以下の API を使用することができます。
|
|
<itemizedlist>
|
|
<listitem><simpara><function>java_last_exception_get</function></simpara></listitem>
|
|
<listitem><simpara><function>java_last_exception_clear</function></simpara></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
オーバーロードの解決は、二つの言語の間で型の違いがあるため一般には
|
|
困難な問題です。PHP の Java 拡張機能は、どのオーバーロードが
|
|
最も一致するかを定義するための方法として、簡単ですがかなり
|
|
効率的なものを使用しています。
|
|
</simpara>
|
|
<simpara>
|
|
加えて、PHP のメソッド名は大文字小文字を区別しないため、選択される
|
|
オーバーロードの数は増加する傾向があります。
|
|
</simpara>
|
|
<simpara>
|
|
メソッドが一度選択されると、パラメータの値は必要に応じて調整されます。
|
|
このため、(倍精度実数が論理値に変換されるといった)データの劣化が
|
|
発生する可能性があります。
|
|
<!-- FIXME Why aren't java-doubles converted to PHP-floats? Is this
|
|
correct? -->
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
PHP では伝統的に配列とハッシュテーブルは相互に完全に可換でした。PHP の
|
|
ハッシュテーブルは整数または文字列の添字のみを使用できることに注意して
|
|
ください。また、Java の primitive 型の配列は疎とすることができないことに
|
|
も注意してください。これらの構造は値で渡されるため、メモリと時間の
|
|
消費量が大きくする可能性があります。
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</section>
|
|
</chapter>
|
|
|
|
<!-- 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
|
|
-->
|
|
|