簡體   English   中英

不公開/ PHP時獲取屬性的最佳方法

[英]Best way to get Properties when they are not public / PHP

我有一個類,當我實例化它時,它通過構造填充屬性。 此類的目的是描述商店,因此將保護其屬性,因為它們僅屬於該類。

但是問題是,有時我需要從屬性中獲取有關該類的一些信息。

例:

class Shop {

  protected $name;

  protected $typology;

  protected $owners;

  protected $closed;

  public function __construct($name,$typology,$owners,$closed)
  {
       $this->name = $name;
       $this->typology = $typology;
       $this->owners = $owners;
       $this->close = $closed;
  }

}

$shop = new Shop("Name Shop","vegetarian",2,1);

$superMarket = SupermarketFactory::getInstance($shop);

Supermaket類(通過Factory實例化)上,需要獲取商店屬性才能使用。

有很多方法可以使這項工作完成,但是所有解決方案在我看來都是有點混亂。 我嘗試了這種方式:

  • 設置getter和setters-若要排除這種方式,要擁有20個屬性,我需要40個方法。 腳本效率不高。

  • 使用__get()魔術方法,我的IDE抱怨通過魔術方法獲取那些屬性。 甚至是正確的,因為在這一點上我可以將其設置為公開。

  • 使用反射,這似乎是上述方法中最好的,但是仍然需要太多實現才能僅獲取屬性(我猜)

因此,我想獲得最好的設計來完成這項工作,擁有一個具有受保護屬性但同時又可以優雅地調用的類。

有什么設計模式可以幫助實現這一目標?

我可能已經在stackOverflow上問過類似的問題,但是我復查了問題並提出了更好的建議。

您可以使用__get()定義類docblock中可通過__get()__set()訪問的屬性列表,該@property應使它們對IDE可見。

參見http://www.phpdoc.org/docs/latest/for-users/phpdoc/tags/property.htmlhttp://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_tags.property.pkg.html供參考和示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM