我正在尝试扩展一个使用格式字符串的类来替换图像标记中的属性。格式字符串如下所示:
protected $_tag = '<img src="%1$s" alt="%2$s" />';
在此功能中使用:
public function getTag() {
return sprintf($this->_tag, $this->_url, $this->_desc);
}
我扩展了这个类并覆盖了格式字符串以接受一些类:
protected $_tag = '<img src="%1$s" alt="%2$s" class="%3$s" />';
然后我覆盖getTag
函数:
public function getTag() {
$this->_tag = sprintf($this->_tag, '%1$s', '%2$s', $this->_classes);
return parent::getTag();
}
有没有比这更好的方法来简单地替换格式字符串的一部分?我很难找到更优雅的东西。
编辑:我正在扩展的课程不是我自己的,所以我无法修改getTag
。
答案 0 :(得分:1)
没有真正好的方法,但你可以稍微简化一下代码:
protected $_tag = '<img src="%%1$s" alt="%%2$s" class="%s" />';
前两个指令有一个额外的%
使第一个sprintf()
跳过它们,最后一个指令没有位置参数,只有%s
。
这将代码简化为:
$this->_tag = sprintf($this->_tag, $this->_classes);