如何重写phalcon方法?

在使用phalcon过程中,发现在同一个控制器流程中无法重复使用 $this-tag->prependTitle($title) 来达到反复拼接文档title的目的,查看源代码发现每次执行prependTitle方法是简单的直接赋值而不是拼接:

public static function prependTitle(string title) -> void
{
    let self::_documentPrependTitle = title;
}

看了一些tag的其他方法好像无法直接在di中实现想要的功能,于是决定重写一下这个方法:

  1. 在loader相关文件增加扩展命名空间:
$loader = new \Phalcon\Loader();
$loader->registerNamespaces([
    //其他命名空间
    'Extend'  => APP_PATH . '/extend',    //phalcon方法重写目录
])->register();
  1. 在extend文件中新建Tag.php,内容如下:
<?php
namespace Extend;
class Tag extends \Phalcon\Tag
{
    //重写Phalcon\Tag的prependTitle方法,可以在同一个控制器中反复使用prependTitle增加标题
    public static function prependTitle($title)
    {
        parent::setTitle($title . parent::getTitleSeparator() . strip_tags(parent::getTitle()));
    }
}
  1. di注入
$di->set('tag', function () {
    return new Extend\Tag();
});
  1. 然后该方法可反复使用
$this->tag->prependTitle('标题1');
$this->tag->prependTitle('标题2');

转载于:https://my.oschina.net/kmwzjs/blog/749941

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值