<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Db\RowGateway\Feature;
use Zend\Db\RowGateway\AbstractRowGateway;
class FeatureSet
{
const APPLY_HALT = 'halt';
/**
* @var AbstractRowGateway
*/
protected $rowGateway = null;
/**
* @var AbstractFeature[]
*/
protected $features = array();
/**
* @var array
*/
protected $magicSpecifications = array();
/**
* @param array $features
*/
public function __construct(array $features = array())
{
if ($features) {
$this->addFeatures($features);
}
}
public function setRowGateway(AbstractRowGateway $rowGateway)
{
$this->rowGateway = $rowGateway;
foreach ($this->features as $feature) {
$feature->setRowGateway($this->rowGateway);
}
return $this;
}
public function getFeatureByClassName($featureClassName)
{
$feature = false;
foreach ($this->features as $potentialFeature) {
if ($potentialFeature instanceof $featureClassName) {
$feature = $potentialFeature;
break;
}
}
return $feature;
}
public function addFeatures(array $features)
{
foreach ($features as $feature) {
$this->addFeature($feature);
}
return $this;
}
public function addFeature(AbstractFeature $feature)
{
$this->features[] = $feature;
$feature->setRowGateway($feature);
return $this;
}
public function apply($method, $args)
{
foreach ($this->features as $feature) {
if (method_exists($feature, $method)) {
$return = call_user_func_array(array($feature, $method), $args);
if ($return === self::APPLY_HALT) {
break;
}
}
}
}
/**
* @param string $property
* @return bool
*/
public function canCallMagicGet($property)
{
return false;
}
/**
* @param string $property
* @return mixed
*/
public function callMagicGet($property)
{
$return = null;
return $return;
}
/**
* @param string $property
* @return bool
*/
public function canCallMagicSet($property)
{
return false;
}
/**
* @param $property
* @param $value
* @return mixed
*/
public function callMagicSet($property, $value)
{
$return = null;
return $return;
}
/**
* @param string $method
* @return bool
*/
public function canCallMagicCall($method)
{
return false;
}
/**
* @param string $method
* @param array $arguments
* @return mixed
*/
public function callMagicCall($method, $arguments)
{
$return = null;
return $return;
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
|
|