laravel5.2 - Laravel使用phpstorm時,提示“這是通過魔術方法訪問欄位”,有什麼不好嗎?

來源:互聯網
上載者:User
關鍵字 php laravel5.2

Laravel使用phpstorm時,提示“這是通過魔術方法訪問欄位”,有什麼不好嗎?
見如下紅框中:

如果這樣不好,那應該怎麼才好?

回複內容:

Laravel使用phpstorm時,提示“這是通過魔術方法訪問欄位”,有什麼不好嗎?
見如下紅框中:

如果這樣不好,那應該怎麼才好?

不知道這個問題為何被關閉, 我重新開啟了來說兩句吧

沒錯, PHP確實提供了一系列魔術方法可以讓你在__set, __get, __call等等中實現一個未定義的調用, 但個人愚見這些是PHP為了彌補本身的缺陷而添加進來的設計

至於該不該用, 什麼時候用, 取決於你的業務情境, 但個人仍然認為這個特性使用要節制, 畢竟這是"魔術"

優點是:

  1. 一定程度上的方便, 你會在很多DAL層的庫中發現運用了這個特性

  2. 一定程度上你可以用這個特性實現代理模式, 函數重載等PHP本身沒有在語言層面支援的特性

缺點是:

  1. 開發不夠友好, IDE自動完成缺失, 無法產生文檔(phpdoc)

  2. 如果你廣泛採用魔術方法, 那很有可能隨著你的商務邏輯的複雜, 你的魔術方法將會非常臃腫和難以閱讀

  3. 也許有效能問題(未驗證)

  4. 提高團隊合作的理解和溝通成本, 本來$obj->getName()掃一眼就知道大概是什麼功能的函數, 現在卻要猜行不行, 有沒有在背後實現魔術方法支援這個$obj->name調用

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.