Nette:模型与供应商库

Nette: Models vs vendor lib

我的模型很少,我已经在每个沙盒项目中实施了一段时间,这让我开始思考。具有持续实施的少数模型与。我自己的库,理论上会包含相同的文件。

问题 #1:少数模型对象与库中的相同对象在执行时间和页面加载方面是否存在差异?

问题 #2:为什么我应该使用库而不是少数模型(反之亦然)?

问题 #3:如果这两者没有任何区别,我是否应该创建自己的库以方便作曲家实施,或者某种自定义沙盒 git 模型代表是更好的选择?

  1. 它不是或可以忽略不计。您的 classes 始终必须包括在内。它们是否被 composer autoload 或 nette RobotLoader 包含并不重要。
  2. 如果特定功能可以帮助其他人,那么您可以通过创建库来帮助他人。如果它对您的应用来说过于具体,请直接在应用中使用 libs 目录或其他内容,如果需要,您可以稍后更轻松地更改功能。
  3. 我会说两者。创建和维护沙箱比许多项目共享的库容易得多。例如,对于 lib,您需要保持向后兼容性。此外,如果您有许多不相关的 class,从它们创建一个库也没有多大意义。 Reather 创建了更多实现特定功能的库。例如,日志记录 class 将包含您的 LogModel。但在开始之前,如果没有您需要的库,请尝试搜索 packagist。对于日志记录,Monolog 可能很有用。您的日历 class 非常适合图书馆。

即使我不完全了解你的情况,我也会尽力回答:

1) 不是真的,它是 class 自动加载,无论它位于何处

2) 当你发现某些 class 具有共同的含义时,我建议将代码移动到库中,可以将其抽象到某个目录,例如

  • 文件管理器
  • ImageResizer
  • ACL
  • 内容管理系统
  • ...

3) 如果您的代码稳定且一致(= 在应用程序中没有更改),我会选择 package。如果您必须对其进行自定义,我会针对每个应用保留它。

这完全取决于您的具体 classes。最好是看到整个项目和你遇到的问题。