1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-24 07:02:08 +01:00
Files
archived-doc-ja/reference/reflection/extending.xml
TAKAGI Masahiro 7d72d588bf sync with en.
git-svn-id: https://svn.php.net/repository/phpdoc/ja/trunk@313922 c90b9560-bf6c-de11-be94-00142212c4b1
2011-07-29 13:16:12 +00:00

103 lines
2.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fa6e196973e45c0013c0801e01697757f4b98426 Maintainer: takagi Status: ready -->
<chapter xml:id="reflection.extending" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>拡張</title>
<para>
組み込みクラスの特別なバージョンを作成したい場合
(例えば、エクスポートする際に色づけしたHTMLを作成したり、
メソッドの代わりに簡単にアクセスできるメンバー変数を作成したり、
補助的なメソッドを作成したり) は、クラスを拡張してみましょう。
</para>
<example>
<title>組み込みクラスを拡張する</title>
<programlisting role="php">
<![CDATA[
<?php
/**
* 独自の Reflection_Method クラス
*/
class My_Reflection_Method extends ReflectionMethod
{
public $visibility = array();
public function __construct($o, $m)
{
parent::__construct($o, $m);
$this->visibility = Reflection::getModifierNames($this->getModifiers());
}
}
/**
* デモクラス #1
*
*/
class T {
protected function x() {}
}
/**
* デモクラス #2
*
*/
class U extends T {
function x() {}
}
// 情報を表示します
var_dump(new My_Reflection_Method('U', 'x'));
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
object(My_Reflection_Method)#1 (3) {
["visibility"]=>
array(1) {
[0]=>
string(6) "public"
}
["name"]=>
string(1) "x"
["class"]=>
string(1) "U"
}
]]>
</screen>
</example>
<caution>
<para>
コンストラクタを上書きする場合は、
挿入するコードの前に親クラスのコンストラクタをコールすることを忘れないようにしましょう。
これを怠ると、以下のようなエラーを発生します。
<literal>
Fatal error: Internal error: Failed to retrieve the reflection object
</literal>
</para>
</caution>
</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
-->