PHP -方法链接-最佳方法

  • 本文关键字:方法 最佳 链接 PHP php
  • 更新时间 :
  • 英文 :


我需要一种方法来让面包屑不是从URL生成的。

我的想法是有一个类,"面包屑",它将作为:

$breadcrumbs = new BreadCrumb('<<')->crumb('www.google.com', 'Google')->crumb('www.youtube.com', 'Youtube');

它将生成一个数组,并且每个方法链都将推回到数组中,从而产生一个数组,然后我可以将其转换为URL结构。

我已经试过了:

class Breadcrumbs {
    public $del; 
    public $breadcrumbs;
    public function __construct($del)
    {
        $this->breadcrumbs = array();
        $this->del = $del;  
    }
    public function crumb($uri, $name)
    {
         $this->breadcrumbs[] = array($uri => $name);
    }
}

然而,这并不能提供准确的结果,并且在尝试按我计划的方式执行该结构时得到'unexpected '-> "。

有什么想法我是错的吗?

  1. 要进行方法链接,需要从方法调用中返回一个对象。通常您需要:

    return $this;  // in function crumb()
    
  2. 实例化对象并立即调用其方法的正确语法是:

    (new BreadCrumb('<<'))->crumb(..)
    
  3. 注意:你不需要在构造函数中初始化你的数组,你可以在声明数组的时候初始化数组:
    public $breadcrumbs = array();
    
  4. 旁白:这是相当低效的:

    .. = array($uri => $name)
    

    您将很难将$uri键从数组中取出,这使您的代码不必要地复杂。您应该简单地执行:

    $this->breadcrumbs[$uri] = $name;
    

    或者,如果您的uri不能保证惟一,则使用以后更容易处理的结构:

    $this->breadcrumbs[] = array($uri, $name);  // $arr[0] is the URI, $arr[1] the name
    

您需要从crumb返回$this才能进行方法链接。

public function crumb($uri, $name)
{
     $this->breadcrumbs[] = array($uri => $name);
     return $this;
}

最新更新