目的
- 因各個頁面不同,實作麵包屑模板
紀錄
程式
BreadCrumbsTmplate.php
<?php
abstract class BreadCrumbsTmplate
{
protected $_list;
protected $_level;
abstract protected function __construct();
abstract public function addBread( string $level, array $item);
public function getBreadCrumbs( )
{
foreach ($this->_level as $row)
{
if(empty($this->_list[$row]))
{
throw new Exception("missing level $row");
}
echo $row."=>".$this->_list[$row]['area_name'].":".$this->_list[$row]['url'];
echo "\n";
}
}
}
ShopBreadCrumbs.php
<?php
class ShopBreadCrumbs extends BreadCrumbsTmplate
{
public function __construct()
{
$this->_level = ['pref','area'];
}
public function addBread( string $level, array $item) : self
{
$this->_list[$level] = $item;
return $this;
}
}
實例化
<?php
$shopBreadCrumbs = new ShopBreadCrumbs();
$shopBreadCrumbs->addBread('pref', ['area_name' => '北海道', 'url' => 'http://www.google.com.tw'])
->addBread('area', ['area_name' => '千歲', 'url' => 'http://www..com.tw'])
->getBreadCrumbs();
結果
pref=>北海道:http://www.google.com.tw
area=>千歲:http://www..com.tw