PHP基于SPL实现的迭代器模式示例
本篇章节讲解PHP基于SPL实现的迭代器模式。分享给大家供大家参考,具体如下: 现在有这么两个类,Department部门类、Employee员工类: _name = $name;
$this->employees = array();
}
function addEmployee(Employee $e){
$this->_employees[] = $e;
echo "员工{$e->getName()}被分配到{$this->_name}中去";
}
}
//员工类
class Employee{
private $_name;
function __construct($name){
$this->_name = $name;
}
function getName(){
return $this->_name;
}
}
//应用:
$lsgo = new Department('LSGO实验室');
$e1 = new Employee("小锦");
$e2 = new Employee("小猪");
$lsgo->addEmployee($e1);
$lsgo->addEmployee($e2);
好了,现在LSGO实验室已经有两个部员了,现在我想把全部的部员都列出来,就是用循环来获取部门的每个员工的详情。 在这里我们用PHP中的SPL标准库提供的迭代器来实现。 《》中如是说: 迭代器模式:迭代器模式是遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。 迭代器模式的作用简而言之:是使所有复杂数据结构的组件都可以使用循环来访问 假如我们的对象要实现迭代,我们使这个类实现 Iterator(SPL标准库提供),这是一个迭代器接口,为了实现该接口,我们必须实现以下方法:
实现了 Iterator 接口和规定的方法后,PHP就能够知道该类类型的对象需要迭代。 我们使用这种方式重构 Department 类: _name = $name;
$this->employees = array();
$this->_position = 0;
}
function addEmployee(Employee $e)
{
$this->_employees[] = $e;
echo "员工{$e->getName()}被分配到{$this->_name}中去";
}
//实现 Iterator 接口要求实现的方法
function current()
{
return $this->_employees[$this->_position];
}
function key()
{
return $this->_position;
}
function next()
{
$this->_position++;
}
function rewind()
{
$this->_position = 0;
}
function valid()
{
return isset($this->_employees[$this->_position]);
}
}
//Employee 类同前
//应用:
$lsgo = new Department('LSGO实验室');
$e1 = new Employee("小锦");
$e2 = new Employee("小猪");
$lsgo->addEmployee($e1);
$lsgo->addEmployee($e2);
echo "LSGO实验室部员情况:";
//这里其实遍历的$_employee
foreach($lsgo as $val){
echo "部员{$val->getName()}";
}
附加:假如现在我们想要知道该部门有几个员工,如果是数组的话,一个 _employees);
}
}
//应用:
echo "员工数量:";
echo count($lsgo);
本文参考自《》 更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》 希望本文所述对大家PHP程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |