呼び出す側
$par2->gen_id = '9790';
$par2->entity_name = 'region' ;
echo "<br>\n".'ID: '.$par2->gen_id."<br>\n" ;
$user = new Model36732() ;
$user->generation($par2) ;
呼び出される側(クラス)
class Model36732//計算するクラス。
{
public function __construct()
{
//コンストラクタは、なぜ今回使わないのか。
}//endfunction
public function generation($par2)
{
$ance = array() ;
$ance = get_ancestors($par2->gen_id, $par2->entity_name) ;
//$cnt = count($ance);
$ance = array_reverse($ance) ;
//////先祖が存在しない場合、$anceは中身は空なので、次の処理へ進む。
//先祖を表示。
echo '先祖'."<br>\n" ;
$k = 0 ;
While ( !empty($ance[$k])) {
$par2->id = $ance[$k] ;
$par2->k = $k ;
$View_obj = new View36732a($par2) ;
$k = $k +1 ;
}//endwhile
//現世代を表示
echo '現世代'."<br>\n" ;
$par2->id = $par2->gen_id ;
$par2->k = $k ;
$View_obj = new View36732a($par2) ;
//子孫を表示
echo '子孫'."<br>\n" ;
$this->children($par2) ;
}
public function children($par2)
{
//抽出処理
$k = $par2->k ;
$args = array(
'parent' => $par2->id ,
);
$the_query = get_terms($par2->entity_name, $args) ;
if(empty($the_query)){
return ;
}
//ループ処理
$k = $k +1 ;
foreach($the_query as $term){
$par2->id = $term->term_id ;
$par2->term = $term ;//$par2に追加。
$par2->k = $k ;//$par2に追加。
$View_obj = new View36732b($par2) ;
$this->children($par2) ;//再帰処理。
}
}//endfunction
}//endclass
class View36732a//表示するクラス。
{
public function __construct($par2)
{
$term = get_term($par2->id , $par2->entity_name ) ;
echo 'k='.$par2->k.' '.$par2->id ;
echo $term->name."<br>\n" ;
}//endfunction
}//endclass
class View36732b//表示するクラス。
{
public function __construct($par2)
{
echo 'k='.$par2->k.' '.$par2->id ;
echo $par2->term->name."<br>\n" ;
}//endfunction
}//endclass