3 回答

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 ?? '';

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) }

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
if(property_exist($object,'propertyName'));
檢查我們的對(duì)象
if(property_exist($reportArtGroup,'artGroup'))
- 3 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)