2016-08-19 46 views
1

我有幾個模型,我已經在每個沙箱項目中執行了一段時間,它讓我思考。少數模型與持續實施VS之間有什麼區別?我自己的庫,它理論上包含相同的文件。Nette:模型vs供應商lib

問題1:是否有從庫中幾個模型對象和相同的對象之間的EXEC時間&頁面加載有什麼區別?

問題2:爲什麼要使用庫而不是少數機型(反之亦然)?

問題3:如果沒有任何差別在這兩年,我要創造我自己的lib只是爲了更容易作曲家實施或某種自定義的沙箱的git代表的高配車型是更好的選擇?

+0

你是什麼意思的「模型」? –

+0

類,NetteObjects,例如我有在basePresenter中實現的Log模型,並記錄任何我需要記錄的內容。或者我有擴展Nette/Object的Object,並且基本上是我的App/Model中其他類的父類。它包含一組有用的功能和檢查方法。接下來,來自上一個應用的示例中,我構建了日曆,其中包含許多不同的與日期/時間相關的功能,並且還用於爲前端創建數據結構。 –

+0

我明白了。一些最低限度的代碼可能會有幫助:你想從哪裏加載什麼? –

回答

2
  1. 它不是或可忽略不計。你的課程必須包含在內。不管它們是由composer自動加載還是由nette RobotLoader提供。
  2. 如果特定功能可以幫助其他人,你可以通過創建一個圖書館幫助別人很多。如果它對你的應用程序來說太具體了,那麼直接在應用程序中使用libs目錄或其他東西,如果需要,以後可以更容易地改變功能。
  3. 我會說兩個。創建和維護沙箱比許多項目共享的lib容易得多。使用lib時,您需要保持向後兼容性。另外,如果你有很多非相關的類,從它們中創建一個庫是沒有什麼意義的。 Reather創建更多實現特定功能的庫。例如,日誌類將包含您的LogModel。但是在你開始之前,如果已經沒有你需要的lib,試試搜索packagist。對於日誌記錄,Monolog可以是有用的。您的日曆班是圖書館的理想人選。
+0

啊,現在我明白了!所以,基本上,主要問題是它是否爲某些應用程序定製以及類是否相關。例如,如果我選擇某種類型的CMS,它應該是lib,但是如果我們談論類似的東西,比方說,某種數據庫遷移工具,我打算將它作爲CMS的一部分使用,但有時獨立的模塊爲其他應用程序,我應該保持它作爲類,而不是爲這個特定的功能去lib。正確? –

+0

在我看來,CMS太複雜,不能自由。另一方面,有更多的庫具有特定的功能,比如db class,pager等等,這些都是由CMS構成的。當然,你也可以在github上發佈你的CMS應用程序,並將它提供給其他人。數據庫遷移工具是lib的很好的例子,與composer一起安裝,因爲您可以與其他應用程序共享它。不應該有太多的功能,特定於一個應用程序。但是,例如UserModel,無論它在所有的應用程序中使用相同的方式,都不是lib的好選擇。希望你能理解。 –

1

即使我不完全瞭解你的情況,我會嘗試儘可能地回答:

1)不是真的,它是一流的自動加載,無論它位於何處

2)當你發現某些類具有通用含義時,我建議將代碼移動到庫中,這可以抽象到某個目錄,例如

  • 文件管理
  • ImageResizer
  • ACL
  • CMS
  • ...

3)如果你的代碼是穩定和一致(=不應用改變),我會去打包。如果你必須定製它,我會保持每個應用程序的具體情況。

這一切都取決於你的具體類。最好的辦法就是看到你的整個項目和問題。