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