php组合模式

组合模式应用于递归结构的优化或分层数据结构的管理:

& lt; ?php

抽象类公司

{

保护美元名称;

/*公共职能__construct(美元名称)

{

$ this→名称=$名称;

}, */

公共,抽象函数添加(公司公司美元);

公共,抽象函数(公司公司美元)移动;

公共,抽象函数显示(水平=0美元);}


类SubCompary延伸公司

{

私人数组$ SubCompary=();

//保护美元名称;

公共职能__construct(美元名称)

{

//父::$ name=$名称;

$ this→名称=$名称;

}

公共函数添加(公司公司美元)

{

如果(! $公司)

{

返回false;

}

$关键=函数(公司,这个→美元SubCompary);

if($键===false)

{

$ this→SubCompary[]=美元公司;

}

返回true;

}

公共职能转移(公司公司美元)

{

如果(! $公司)

{

返回false;

}

$关键=函数(公司,这个→美元SubCompary);

if($关键!==false)

{

设置($ this→SubCompary [$ key]);}

返回true;

}

公共函数显示(水平=0美元)

{

//输出本节点的名称

if ($ this→名称)

{

$="之前,

(i=0; i<美元美元水平;美元我+ +)

{

前美元。=?”;

}

回声。以前这→美元的名字。& lt; br/祝辞,

}

//按层次输出每个分层的节点的名称

如果(is_array ($ this→SubCompary))

{

foreach ($ this→SubCompary美元关键=比;美元值)

{

//递归输出每层的节点名称

//递归输出每层的节点名称

美元价值→显示(水平+ 2美元);}

其他}

{

}

}

}

类部门延伸公司

{

私人部门美元=()数组;

//保护美元名称;

公共职能__construct(美元名称)

{

//父::$ name=$名称;

$ this→名称=$名称;

}

公共函数添加(公司公司美元)

{

/*如果(! $公司)

{

返回false;

}

$关键=函数(公司,这个→美元dapartment);

if($键===false)

{

$ this→dapartment[]=$本;

返回true;

}

其他{

返回false;

} */

回声的叶子节点不能增加节点!”;

}

公共职能转移(公司公司美元)

{

/*如果(! $公司)

{

返回false;

}

$关键=函数(公司,这美元→部门),

if($关键!==false)

{

设置($ this→部门[$ key]);

返回true;

}其他

{

返回false;

} */

回声的叶子节点不能删除节点!”;

}

公共函数显示(水平=0美元)

{

如果(! $ this→名称)

{

返回false;

}

="以前美元;

(i=0; i<美元美元水平;美元我+ +)

{

前美元。=?”;

}

回声。以前这→美元的名字。& lt; br/祝辞,

/*如果(is_array ($ this→部门))

{

foreach ($ this→部门关键美元=比;美元值)

{

美元价值→显示(水平+ 2美元);}

其他}

{

返回false;

} */}

}

头(“的content - type: text/html; charset=utf - 8 ');

subcompary美元=new subcompary(“北京公司”);



美元subcompary→添加(新部门(“总公司财务部”)),

美元subcompary→添加(新部门(“总公司技术部”)),


上海美元=new subcompary(“上海分公司”);

$上海→添加(新部门(“上海分公司技术部”)),

$上海→添加(新部门(“上海分公司财务部”)),


美元subcompary→添加(上海)美元;


subcompary→美元显示(2);


?在


php组合模式