PHPで指定Classのプロパティとメソッドを一覧表示する
2006年12月13日Table of Contents
前に作った[ 定義済みClassの確認 ]のスクリプトを若干修正。
UI側にCSSでスタイルを指定して、ソース内部でClass名を指定するとプロパティとメソッドを一覧表示するように変更。
まだまだ半自動化って感じだけど、そこそこ使えそうなのでメモ。
ただし、$myclassのリスト名はそのまま内部でrequire()しているので、Class名とClassファイル名が同一なのが前提条件。
仮にClass名とClassファイル名が異なる場合は、個々にrequire()すればOK。
<?php // // +------------------------------------------------------------+ // | 定義済みClass Checker | // +------------------------------------------------------------+ //{{{ DESCRIPTION // +------------------------------------------------------------+ // | 内部で指定されたClassの定義状態を確認 // | 定義済みのClassはメソッドとプロパティーを表示 // +------------------------------------------------------------+ //}}} DESCRIPTION // /* include path セット */ //ini_set('include_path', ''); /* Check Class List */ // Class名とClassファイル名が同一じゃないと正常に動作しない $myclass = array( 'Class1', 'Class2', 'Class3', ); /* Class ListのClassを自動include */ for($i=0; $i<count($myclass); $i++){ require_once($myclass[$i]. '.php'); } /* ClassListの取得 */ $class_list = getDefinitionClasslist(); /* HTML出力 */ getHTMLLayout('定義済みClassリスト', $class_list); exit(); //{{{ getDefinitionClassList() --- 定義済みClassのHTML出力 /** * 定義済みClassのHTML出力 * @param: array * @return: string html * @access: public */ function getDefinitionClassList() { global $myclass; $html = ''; for($i=0; $i<count($myclass); $i++){ /* プロパティの出力 */ $property = print_r( get_class_vars($myclass[$i]), true); /* メソッドの出力 */ $method = print_r( get_class_methods($myclass[$i]), true); /* レイアウト調整 */ // property $property = preg_replace('/ /', ' ', $property); $property = nl2br($property); // method $method = preg_replace('/ /', ' ', $method); $method = nl2br($method); $html .=<<<EOF <!-- class --> <ul class="parent"> <li class="parent_title">{$myclass[$i]}::property</li> <li> <!-- property --> <ul class="child"> <li class="child_title">{$myclass[$i]}::property</li> <li class="child_list">{$property}</li> </ul> <!-- property --> </li> <li class="parent_title">{$myclass[$i]}::method</li> <li> <!-- method --> <ul class="child"> <li class="child_title">{$myclass[$i]}::method</li> <li class="child_list">{$method}</li> </ul> <!-- method --> </li> </ul> <!-- class --> EOF; } return $html; } //}}} //{{{ getHTMLLayout() --- HTMLソース(レイアウト)出力 /** * HTMLソース(レイアウト)出力 * @param: $title htmlタイトル * @param: $contents html内コンテンツ * @return: string html * @access: public */ function getHTMLLayout($title, $contents) { print<<<EOF <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <title>{$title}</title> <meta http-equiv="description" content=""> <meta http-equiv="keywords" content=""> <meta http-equiv="content-style-type" content="text/css"> <meta http-equiv="content-script-type" content="text/javascript"> <link rel="stylesheet" type="text/css" href="./_.css" media="all"> <style type="text/css"> <!-- *{margin: 0; padding: 0; font-size: 10pt;} div.html_container{width: 760px; background: #fff;} div.html_header{height: 3em; text-align: center; background: #eee;} div.html_contents{padding: 1em; border: 1px solid #ccc;} div.html_footer{footer: 1.5em; text-align: right; background: #eee;} ul{list-style-type: none; list-style-position: inside;} ul.parent{border: 1px solid #ccc;} li.parent_title{background: #69c; font: #fff;} ul.child{margin: 1em; border: 1px solid #ccc;} li.child_title{border: 1px solid #ccc; background: #eee;} li.child_list{margin-left: 3em;} --> </style> </head> <body> <!-- html_container --> <div class="html_container"> <!-- page_header --> <div class="html_header">{$title}</div> <!-- page_header --> <!-- page_contents --> <div class="html_contents"> {$contents} </div> <!-- page_contents --> <!-- page_footer --> <div class="html_footer"> <a href="{$_SERVER['SCRIPT_NAME']}">{$title}</a> </div> <!-- page_footer --> </div> <!-- html_container --> </body> </html> EOF; } //}}}