我正在使用一個類,該類具有一個要在運行時取消/銷毀的屬性。該解封發(fā)生在一個特定的方法,但該方法調(diào)用它返回TRUE的property_exists,雖然它不能直接訪問屬性$this->property,因為它返回的通知Notice: Undefined property:... public function get(int $id) { if ($record->data) { $this->_transform($record); // Calling method that unsets prop } if (! property_exists($this, 'isEmpty') ) { // FALSE $this->transform(); }else{ echo $this->isEmpty; // FALSE as well! } return $this; }正如您在取消設(shè)置后的代碼中看到的那樣,property_exists返回TRUE不應(yīng)發(fā)生,但該屬性是未定義的。編輯似乎如果該屬性是在類的架構(gòu)中聲明的,則它無法被破壞/取消設(shè)置(請參閱所選答案的演示),并且實際上它的行為自相矛盾:property_exists => TRUE,object-> property => warning但是,如果未定義屬性而是在對象的構(gòu)造中創(chuàng)建了該屬性,則可以將其取消設(shè)置并按預(yù)期方式運行。
1 回答

largeQ
TA貢獻2039條經(jīng)驗 獲得超8個贊
從PHP 5.3.0開始,如果將其定義為對象變量,則即使在之后也property_exists
返回。請改用,因為它會在之后返回。true
unset
isset($this->isEmpty)
false
unset
但是,您可能應(yīng)該采用其他方法,例如設(shè)置為true
orfalse
或null
or并進行檢查。
- 1 回答
- 0 關(guān)注
- 189 瀏覽
添加回答
舉報
0/150
提交
取消