2013-08-31 22 views
0

我知道App::uses沒有延遲加載,但是如果我們打算在我們的代碼的一小部分中使用ie CakeTime(就像在調用該方法的1/3時間的if語句內部),那麼會是什麼App::uses('CakeTime', 'Utility')的最佳地點?控制器內置App :: uses的優先級是什麼?

的選項有:

  1. AppController的
  2. myController的
  3. :: myController的方法名
  4. :: myController的if語句裏面方法名(其中,它實際上是將要使用)。

我把它放在4,因爲我猜一定有一些明顯的開銷(即使真的很小),但我沒有看到任何理由讓它出現在控制器的每次調用中。我的同事說2是因爲它「我們可能在將來的其他地方需要它,它會延遲加載,所以這不是問題」。我的答案是,如果我們在其他地方需要它,那麼我們應該重新定義,然後根據情況將其放在哪裏。

您的意見是什麼?爲什麼?

回答

2

沒有首選的地方,只有一個「正確」的地方。 總是在類實際使用它的文件中。

所以如果你在你的MyController中使用CakeTime,那麼你可能會把它放在同一個文件的頂部。

除了技術方面,在3.0版本中這樣做也是明智的做法。 如果你想遷移(並因此使用名稱空間聲明),如果你將前者的App :: uses()語句放在正確的位置,你將不勝感激。

+0

任何指針爲什麼把它放在類聲明以外的地方在技術上不正確?我已經說服你說什麼了,但我也需要知道爲什麼:) – user221931

+0

「爲什麼」很容易:如果你只包含這個類(一個常見的例子是測試用例!),否則它會100%破壞。 – mark