Php zend框架中zend标记组件的用途是什么?

Php zend框架中zend标记组件的用途是什么?,php,zend-framework,zend-framework2,zend-tag,Php,Zend Framework,Zend Framework2,Zend Tag,我想知道Zend标签组件 这是什么? 如何在我的项目中使用它 假设我有以下三个表: posts-id,name 标签-id、名称 贴子标签-id,贴子id,标签id 如何使用此组件创建标记云? 什么是重量 我已经检查过这些: 文档非常清晰(尽管不是那么明显);也许更好的问题是“Zend_Tag_Cloud是什么?” Zend_Tag_Cloud是Zend_Tag的渲染部分。默认情况下,它附带一组HTML装饰器,允许您为网站创建标记云,但也提供两个抽象类来创建自己的装饰器,例如在PDF文档中创建

我想知道Zend标签组件

这是什么? 如何在我的项目中使用它

假设我有以下三个表: posts-id,name 标签-id、名称 贴子标签-id,贴子id,标签id

如何使用此组件创建标记云? 什么是重量

我已经检查过这些:


文档非常清晰(尽管不是那么明显);也许更好的问题是“Zend_Tag_Cloud是什么?”

Zend_Tag_Cloud是Zend_Tag的渲染部分。默认情况下,它附带一组HTML装饰器,允许您为网站创建标记云,但也提供两个抽象类来创建自己的装饰器,例如在PDF文档中创建标记云


HTH.

文档非常清晰(尽管不是那么明显);也许更好的问题是“Zend_Tag_Cloud是什么?”

Zend_Tag_Cloud是Zend_Tag的渲染部分。默认情况下,它附带一组HTML装饰器,允许您为网站创建标记云,但也提供两个抽象类来创建自己的装饰器,例如在PDF文档中创建标记云


HTH.

例如,您有两个标记:
标记A
出现1000次,
标记B
仅出现一次,以及
标记C
出现50次。第一个想法可能是将出现次数作为字体大小。现在这并没有多大帮助,因为我们将在字体大小
1000
处使用
标记A
,在字体大小
1
处使用
标记B
。相反,您可能需要以下内容:

  • 出现最多的标记应具有字体大小
    25
  • 出现最少的标记应具有字体大小
    10
  • 所有其他标签应以
    2
这就是本模块的作用所在。本模块试图解决的基本问题是标记出现的频率与您希望它相对于其他标记显示的大小之间的映射。或者放入函数:
calculateBoundedFontSize(count($tag))

Zend\Tag\
中,这由权重(标记出现的数量)和值(与标记权重相关的字体大小值)处理:

  • 首先,我们创建一个标签列表,给每个标签一个权重(例如,发生次数)
  • 其次,我们告诉模块将允许的字体大小数组映射到与发生次数相关的项目
第二步是通过文档中的这一行完成的:

$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
这基本上告诉模块给标记occoring最多的字体大小为
10
,给标记occoring最少的字体大小为
1
。介于两者之间的一切都是偶然传播的。回到初始示例,
标记A
的字体大小为
10
标记B
的字体大小为
1
标记C
的字体大小为
2

文档没有特别提到
count
font size
的原因是为了抽象。我们可以使用其他因素来确定项目的重要性(例如重要性),而不是计算发生次数。我们还可以使用一些更高级的计算值,例如,我们可以说,
特征标签
更重要,并且除了计数之外,还可以在它们的重量上添加一个额外的
1000
。对于同样适用的值,它不需要是字体大小,但也可以用于排序。 只有
Zend\Tag\Cloud
使用这些权重和值作为字体大小。但是我们可以轻松地创建另一个模块,使用它们来呈现有序列表

对于您的情况,简单的示例已经足够了:

// Create a ItemList
$list = new Zend\Tag\ItemList();

// Add all tags and their count to it
foreach ($allTags as $tag) {
    $list[] = new Zend\Tag\Item(array('title' => $tag, 'weight' => countTagOccurences($tag));
}

// Assign font size values 
$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));


// Or to use the Zend\Tag\Cloud directly
$cloud = new Zend\Tag\Cloud(
    array(
        'tagDecorator' => array(
            'decorator' => 'htmltag',
            'options'   => array(
                'minFontSize' => '1',
                'maxFontSize' => '10',
         ),
     ),

     'tags' => $list
     )
);

例如,您有两个标记:
标记A
出现1000次,
标记B
只出现一次,以及
标记C
出现50次。第一个想法可能是将出现次数作为字体大小。现在这并没有多大帮助,因为我们将在字体大小
1000
处使用
标记A
,在字体大小
1
处使用
标记B
。相反,您可能需要以下内容:

  • 出现最多的标记应具有字体大小
    25
  • 出现最少的标记应具有字体大小
    10
  • 所有其他标签应以
    2
这就是本模块的作用所在。本模块试图解决的基本问题是标记出现的频率与您希望它相对于其他标记显示的大小之间的映射。或者放入函数:
calculateBoundedFontSize(count($tag))

Zend\Tag\
中,这由权重(标记出现的数量)和值(与标记权重相关的字体大小值)处理:

  • 首先,我们创建一个标签列表,给每个标签一个权重(例如,发生次数)
  • 其次,我们告诉模块将允许的字体大小数组映射到与发生次数相关的项目
第二步是通过文档中的这一行完成的:

$list->spreadWeightValues(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
这基本上告诉模块给标记occoring最多的字体大小为
10
,给标记occoring最少的字体大小为
1
。介于两者之间的一切都是偶然传播的。回到初始示例,
标记A
的字体大小为
10
标记B
的字体大小为
1
标记C
的字体大小为
2

文档没有特别提到
count
font size
的原因是为了抽象。我们可以使用其他因素来确定项目的重要性,而不是计算发生的次数(例如。