摘要:關于的介紹自行查閱官方文檔,這里不再贅述。使用的同學注意了,如果在我們的代碼中使用到了中相關的魔術方法,需要在文件中指明告訴應該如何來跟蹤變量屬性。下面我們來具體實踐分析。確實這個樣子可以實現,但沒有利用到這一魔術方法的特性。
關于 Magic Methods 的介紹自行查閱官方文檔,這里不再贅述。
http://php.net/manual/en/lang...
使用 phpstorm 的同學注意了,如果在我們的代碼中使用到了 php 中相關的魔術方法,需要在 php 文件中指明告訴 phpstorm 應該如何來跟蹤變量屬性。下面我們來具體實踐分析。
假設現在我有一個 php 的基類名為 BaseController.php
container = $container; } /** * @param $name * @return mixed */ public function __isset ($name) { return $this->container->{$name}; } /** * @param $name * @param $value * @return mixed */ public function __set ($name, $value) { return $this->container->{$name} = $value; } /** * @param $name * @return mixed */ public function __get ($name) { return $this->container->{$name}; } }
同時還有一個 CompanyController.php 的類文件繼承的該 BaseController.php
auth->requestUser($request); } }
這里我們主要要關注的點就是 $this->auth 這個,因為這個才是我們今天要將的重點。這里再說一點,列舉的代碼是基于 slim framework 中的一部分,有不了解 slim framework 的可以先了解下。當然不了解也不影響我們今天要說的這一點。下面是正題。
這里我想實現的效果就是當我在 CompanyController.php 的方法中要訪問這個容器(container)中的 auth,可以直接使用 $this->auth,然后就可以操作auth中的方法和屬性等。
那上面我列舉的方式是使用 php 語言的 magic methods 這個特性,那有同學就要說了,我直接指定豈不是也可以,答案是肯定的。
container = $container; $this->auth = $this->container->get("auth"); $this->validator = $this->container->get("validator"); $this->fractal = $this->container->get("fractal"); $this->session = $this->container->get("session"); $this->db = $this->container->get("db"); }
效果就是這個樣子。
確實這個樣子可以實現,但沒有利用到 magic method 這一魔術方法的特性。
這里著重說明的是這個我們定義的這些個類內部屬性(這些成員屬性必須通過phpdoc 的 @var 來指明你將要調用的成員屬性是哪一個不然 phpstorm 不會識別提示)和 __get() 方法,當我們要訪問不可訪問的屬性時會調用該方法。
那所以說 $auth | $validator | $db | fractal 等屬性我們要在外部自動調用 __get() 方法來訪問的話就必須將其訪問修飾符設置為 private (php 中的三種修飾符 public protected private),這樣我們在外部調用才能自動執行到 __get() 方法,達到同樣的目的來調用 $this->auth 等
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30784.html
摘要:特別適合一些動態加載的類,無法自動提示出來,這時就可以通過寫標記來告訴我這類里有哪些方法格式返回值類型名稱類型參數描述例如向谷歌提問,返回答案內容包。 用過IDE或看過其他源碼的小伙伴們應該都見過類似下面這樣的注釋 /** * 遞歸獲取所有游戲分類 * @param int $id * @return array */ 看得多了就大概知道了一些規律。為了使自己的代碼更加規zhu...
摘要:是個代碼格式化工具,格式化的標準是以及一些的標準。這個工具也和等優秀的庫出自同門。如果同時設定了和,前者的優先級更高。同時使用和命令可以顯示出需要修改的匯總,但是并不實際修改。你可以設置格式化的選項級別文件以及目錄。 php-cs-fixer 是個代碼格式化工具,格式化的標準是 PSR-1、PSR-2 以及一些 symfony 的標準。這個工具也和 symfony、twig 等優秀的 ...
摘要:新建時創建默認數據將基本字段添加到你的類在本節中,介紹如何向最近創建的類添加類型為,或的新的基本字段,在這個例子中,我們將向類添加一個新的字段首先要做的是定義類中的新字段。 新手入門指南-創建模塊 Customizing Zurmo ---- 自定義Zurmo 官方的動物園為例:鏈接:http://zurmo.org/wiki/customi... 新建模塊 所有擴展類將在自己的模塊...
摘要:新建時創建默認數據將基本字段添加到你的類在本節中,介紹如何向最近創建的類添加類型為,或的新的基本字段,在這個例子中,我們將向類添加一個新的字段首先要做的是定義類中的新字段。 新手入門指南-創建模塊 Customizing Zurmo ---- 自定義Zurmo 官方的動物園為例:鏈接:http://zurmo.org/wiki/customi... 新建模塊 所有擴展類將在自己的模塊...
閱讀 3757·2021-11-24 09:39
閱讀 2953·2021-11-16 11:49
閱讀 2076·2019-08-30 13:54
閱讀 1105·2019-08-30 13:03
閱讀 1091·2019-08-30 11:10
閱讀 718·2019-08-29 17:10
閱讀 1248·2019-08-29 15:04
閱讀 1212·2019-08-29 13:02