亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

構造函數中分配的 Laravel 作業新屬性未顯示在句柄方法中

構造函數中分配的 Laravel 作業新屬性未顯示在句柄方法中

PHP
Smart貓小萌 2023-04-28 17:42:35
在 Laravel 作業類中,其代碼如下圖所示。如果滿足條件,我想為我的對象分配一個屬性(保留不是數據庫上的列)。問題是我在構造函數之外看不到該屬性。請問我做錯了什么?class SomeJob implements ShouldQueue{     private $length = 300;  private $width;  private $area;  public function __construct()  {    $areas = Area::where('length', $this->length)->get()->each(function($area) {     if($area->length === 300) {       $area->reserve = ($area->length + 400);     }   });   $this->area = $areas;   // *log has $area  }    public function handle()  {   $area = $this->area;   logger($area);   // *log does not have $area  }}
查看完整描述

4 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

要訪問方法中的任何屬性,您必須顯式調用該方法,例如$sj = new someJob(); $sj->handle();. “Var 轉儲”類揭示其屬性,并且根據環境和可見性,某些屬性可能可見也可能不可見。當一個類被實例化時,首先會自動調用構造函數,這就是為什么您可以“記錄”并查看您的類屬性的原因。在引擎蓋內,Laravel 在運行作業類時調用 handle 方法,但如果你手動測試它,你必須自己做。



查看完整回答
反對 回復 2023-04-28
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

我認為屬性必須是protected而不是private.



查看完整回答
反對 回復 2023-04-28
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

該解決方案沒有意義,但將區域屬性公開而不是私有似乎有效。



查看完整回答
反對 回復 2023-04-28
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

您需要在函數外部定義屬性__construct()。目前,這些變量的范圍僅限于閉包內可用__construct()。


class SomeJob implements ShouldQueue

{   

     protected $length;

     protected $width;

     protected $area;


     public function __construct()

     {

         //...


查看完整回答
反對 回復 2023-04-28
  • 4 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號