Gravatar是个提供头像服务的网站(网址:[http://www.gravatar.com]),只要用邮箱注册之后,就可以用邮箱获得上面的头像。
下面我们要在每行留言的前面由留言者的email,生成其在Gravatar上注册的头像。
为了演示我们的autoload,我们打算用一个独立的类完成这个操作。
<?php
class notebook_ctl_default extends base_controller{
public function index(){
$this->pagedata['items'] = $this->app->model('item')->getList('*');
//新加的内容开始
$gravatar = new notebook_gravatar;
foreach($this->pagedata['items'] as $k=>$item){
$this->pagedata['items'][$k]['avatar'] = $gravatar->get_avatar($item['item_email']);
}
//新加的内容结束
$this->display('default.html');
}
....
以下划线_分隔类的名称,第一个区段标示app的名字,后面的部分为该app的lib目录下路径。 最后一个区段是具体的文件名。当app的名字是core时,则到ecos的core/lib目录下寻找指定的类。当类名中没有下划线时,则到ecos的core/lib/static目录下寻找指定的类。因此,aaa_bbb_ccc_ddd指向app/aaa/lib/bbb/ccc/ddd.php; core_bbb_ccc指向core/lib/bbb/ccc.php。
<?php
class notebook_gravatar{
function get_avatar($email){
return sprintf('http://www.gravatar.com/avatar/%s?s=48&r=x',md5($email));
}
}
<dl> <{foreach from=$items item=item}> <dt> <{$item.item_subject}> <span class="date">日期: <{$item.item_posttime|cdate}></span> </dt> <dd> <!-- 新加的内容开始 --> <img src="<{$item.avatar}>" style="float:left;margin-right:10px" /> <!-- 新加的内容结束 --> <{$item.item_content}> </dd> <{/foreach}> <div style="margin-bottom:20px;clear:both" /> </div> </dl>