第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP - 檢查是否可以獲得屬性

PHP - 檢查是否可以獲得屬性

PHP
BIG陽 2021-12-24 09:27:08
我有一個(gè)應(yīng)用程序,遇到了一個(gè)小問題。我有一個(gè)類標(biāo)題:class ReportArtGroup extends JournalListElement {    public $artGroupNum;    private $artGroupAmnt;    private $accDesc;    function setArtGroupAmnt($artGroupAmnt) {        $this->artGroupAmnt = MoneyHelper::centsToDollars($artGroupAmnt);    }    function getArtGroupAmnt() {        return $this->artGroupAmnt;    }}這只是一個(gè)示例類?,F(xiàn)在假設(shè)我想通過一個(gè)函數(shù)來檢查每個(gè)屬性的可訪問性,例如accessible()。特別是可訪問的應(yīng)按以下方式操作:accessible($reportArtGroup->artGroupNum) // return true.accessible($report->artGroupAmnt) // should return true because accessible through getteraccessible($report->accDesc) // Should return false because not accessible我怎樣才能在 PHP 中做到這一點(diǎn)?問題說明:使用反射,getProperties()我可以選擇僅獲取私有屬性或僅獲取公共屬性。直到現(xiàn)在還找不到將 $artGroupAmnt 歸還給公眾的方法!考慮使用isset()但當(dāng)然在公共屬性中設(shè)置 isset 取決于是否設(shè)置了屬性。任何可以獲取對(duì)象可以返回的所有屬性的方法(包括神奇地使用 getter)都是完美的。也打開以使用反射或任何方法獲取所有屬性,然后逐一檢查。上面提到的行為雖然是小鬼
查看完整描述

3 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

您需要通過 Method 調(diào)用訪問 getter,因?yàn)闆]有像 C# 那樣真正的(保護(hù))屬性支持。(隨 php 7.4 一起提供)


accessible($report->getArtGroupAmnt());

如果成員變量是公共的,您可以直接訪問它們。


public $accDesc;

echo $instance->accDesc;

要在未設(shè)置時(shí)具有特殊的返回值,請(qǐng)像這樣初始化它們


public $iAmTrue = true;

public $iAmNull = null;

public $iAmNullToo;

public $iAmZero = 0;

public $iAmEmptyString = '';

public $iAmEmptyArray = [];

所以在訪問時(shí)


var_dump($instance->$iAmEmptyArray);

你會(huì)得到一個(gè)空數(shù)組。因?yàn)樗鼈兪枪_的,所以考慮它可以被覆蓋


$instance->iAmEmptyArray = 'Hello World';

所以你應(yīng)該編寫可靠的 getter 和 setter。


private $array;


public setArray($array = []):void {

      $this->array = $array;

}


public getArray(): array {

      return $this->array ?? [];

}

像 PHPStorm 這樣的現(xiàn)代 IDE 可以為您自動(dòng)完成。


您可能會(huì)使用空合并運(yùn)算符來欺騙一下。公開成員變量并執(zhí)行以下操作:


public $myArray;

public $myInt;

public $myBool;

public $myString;


$_array  = $instance->myArray  ?? [];

$_int    = $instance->myInt    ?? 0;

$_bool   = $instance->myBool   ?? false;

$_string = $instance->myString ?? '';


查看完整回答
反對(duì) 回復(fù) 2021-12-24
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

試試這個(gè):


function isPropertyAccessible($obj,$property){

  return array_key_exists($property,get_object_vars($obj));

}


function isMethodAccessible($obj,$method){

  return in_array($method,get_class_methods($obj));

}


class test{

  private $private = 1;

  protected $protected = 2; 

  public $public;

  private function funcpriv(){}

  public function funcpub(){}

}

$obj = new test;


$results = [];

$results[] = isPropertyAccessible($obj,'notexists');

$results[] = isPropertyAccessible($obj,'private');

$results[] = isPropertyAccessible($obj,'protected');

$results[] = isPropertyAccessible($obj,'public');


$results2[] = isMethodAccessible($obj,'notexists');

$results2[] = isMethodAccessible($obj,'funcpriv');

$results2[] = isMethodAccessible($obj,'funcpub');


var_dump($results);

// array(4) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) [3]=> bool(true) }

var_dump($results2);

// array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(true) }


查看完整回答
反對(duì) 回復(fù) 2021-12-24
?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

if(property_exist($object,'propertyName'));

檢查我們的對(duì)象

if(property_exist($reportArtGroup,'artGroup'))


查看完整回答
反對(duì) 回復(fù) 2021-12-24
  • 3 回答
  • 0 關(guān)注
  • 152 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)