1. 云栖社区>
  2. PHP教程>
  3. 正文

php组合模式

作者:用户 来源:互联网 时间:2017-12-01 17:03:25

php组合模式

php组合模式 - 摘要: 本文讲的是php组合模式, 组合模式应用于递归结构的优化或分层数据结构的管理: <?php abstract class Compary { protected $name; /* public function __construct($name) { $t


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

<?php

abstract class Compary

{

protected $name;

/* public function __construct($name)

{

$this->name=$name;

} */

abstract public function Add(Compary $compary);

abstract public function Move(Compary $compary);

abstract public function Display($level=0);

}

class SubCompary extends Compary

{

private $subcompary=array();

//protected $name;

public function __construct($name)

{

//parent::$name=$name;

$this->name=$name;

}

public function Add(Compary $compary)

{

if(!$compary)

{

return false;

}

$key=array_search($compary,$this->subcompary);

if($key===false)

{

$this->subcompary[]=$compary;

}

return true;

}

public function Move(Compary $compary)

{

if(!$compary)

{

return false;

}

$key=array_search($compary,$this->subcompary);

if($key!==false)

{

unset($this->subcompary[$key]);

}

return true;

}

public function Display($level=0)

{

//输出本节点的名称

if($this->name)

{

$pre='';

for($i=0;$i<$level;$i++)

{

$pre.='-';

}

echo $pre.$this->name.'<br/>';

}

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

if(is_array($this->subcompary))

{

foreach($this->subcompary as $key => $value )

{

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

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

$value->Display($level+2);

}

}

else

{

}

}

}

class Department extends Compary

{

private $department=array();

//protected $name;

public function __construct($name)

{

//parent::$name=$name;

$this->name=$name;

}

public function Add(Compary $compary)

{

/* if(!$compary)

{

return false;

}

$key=array_search($compary,$this->dapartment);

if($key===false)

{

$this->dapartment[]=$compaty;

return true;

}

else

{

return false;

} */

echo '叶子节点不能增加节点。';

}

public function Move(Compary $compary)

{

/* if(!$compary)

{

return false;

}

$key=array_search($compary,$this->department);

if($key!==false)

{

unset($this->department[$key]);

return true;

}

else

{

return false;

} */

echo '叶子节点不能删除节点。';

}

public function Display($level=0)

{

if(!$this->name)

{

return false;

}

$pre='';

for($i=0;$i<$level;$i++)

{

$pre.='-';

}

echo $pre.$this->name.'<br/>';

/* if(is_array($this->department))

{

foreach($this->department as $key => $value )

{

$value->Display($level+2);

}

}

else

{

return false;

} */

}

}

header('content-type:text/html;charset=utf-8');

$subcompary=new SubCompary('北京公司');

$subcompary->Add(new Department('总公司财务部'));

$subcompary->Add(new Department('总公司技术部'));

$shanghai=new SubCompary('上海分公司');

$shanghai->Add(new Department('上海分公司技术部'));

$shanghai->Add(new Department('上海分公司财务部'));

$subcompary->Add($shanghai);

$subcompary->Display(2);

?>


以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , 组合 模式 ,以便于您获取更多的相关知识。

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

开发者常用软件,超百款实用软件一站式提供