你只需要申报的FeatureSet的后裔,并MetadataFeature的后裔。
在自己的FeatureSet,覆盖功能canCallMagicGet。 这里是我是如何做到的
public function canCallMagicGet($property)
{
if ($property == 'metadata'){
$result = $this->getMetadataFeature();
return ($result!==FALSE);
}
else return parent::canCallMagicGet($property);
}
在我的情况为例,getMetadataFeature返回MetadataFeature实例(的instanceof)从的FeatureSet类继承财产的保护功能$发现的第一次出现。
您也可以覆盖第二种方法,callMagicGet。 下面是一个例子如何:
public function callMagicGet($property)
{
if ($property == 'metadata'){
$metadataFeature = $this->getMetadataFeature();
return $metadataFeature->metadata;
}
else
return parent::callMagicGet($property);
}
最后,你可以在自己的MetadataFeature声明魔术方法__get。您的__get可能会返回元数据直接来自受保护的财产$ sharedData。
总之,一旦你已经声明自己的FeatureSet和MetadataFeature后裔,您可以使用它们替代当前的那些的。 然后,你可以调用
$tableGatewayInstance->metadata
和MetadataFeature收集将提供给您的元数据。
干杯
这应该是有帮助的[http://stackoverflow.com/questions/13646338/return-table-primary-key-name-with-tablegateway](http://stackoverflow.com/questions/ 13646338/return-table-primary-key-name-with-tablegateway) –
好吧,我终于创建了自己的特性来访问该属性:)但是,我已经放弃了Zend 2作为完全unusefull的东西。 – Ivan
@KunalDethe会更好地写出一个解决方案..我还没有看到如何帮助页面。 – Erik