Oop Nette:模型与供应商库

Oop Nette:模型与供应商库,oop,models,implementation,vendor,nette,Oop,Models,Implementation,Vendor,Nette,我有几个模型,我在每个沙盒项目中都实现了一段时间,这让我思考。与我自己的库(理论上包含相同的文件)相比,少数几个具有恒定实现的模型有什么不同 问题#1:在少数模型对象和库中的相同对象之间,执行时间和页面加载是否有任何差异 问题2:为什么我应该使用库而不是少数几个模型(反之亦然) 问题#3:如果这两者没有任何区别,我是否应该创建自己的库来简化composer实现,或者使用某种自定义的沙盒git rep和模型是更好的选择 它不是或是可以忽略不计的。你的课程必须包括在内。无论它们是由composer

我有几个模型,我在每个沙盒项目中都实现了一段时间,这让我思考。与我自己的库(理论上包含相同的文件)相比,少数几个具有恒定实现的模型有什么不同

问题#1:在少数模型对象和库中的相同对象之间,执行时间和页面加载是否有任何差异

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

问题#3:如果这两者没有任何区别,我是否应该创建自己的库来简化composer实现,或者使用某种自定义的沙盒git rep和模型是更好的选择

  • 它不是或是可以忽略不计的。你的课程必须包括在内。无论它们是由composer autoload还是nette RobotLoader包含,都没有关系
  • 如果特定的功能可以帮助其他人,那么您可以通过创建库来帮助其他人。若它对你们的应用程序来说太具体了,那个么直接在应用程序中使用libs dir或其他东西,若需要的话,你们可以在以后更容易地更改函数性
  • 我想两者都有。创建和维护沙箱比许多项目共享的库容易得多。例如,对于lib,您需要保持向后兼容性。另外,如果您有许多不相关的类,那么从它们创建一个库也没有多大意义。Reather创建更多实现特定功能的库。例如,logging类将包括您的LogModel。但在开始之前,如果已经没有所需的库,请尝试搜索PackageGist。对于日志记录,独白是有用的。你们的日历课是图书馆的理想人选

  • 即使我不完全了解你的情况,我也会尽可能地回答:

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

    2) 当您发现一些类有共同的含义时,我建议将代码移到库中,这些类可以抽象到某个目录中,例如

    • 文件管理器
    • 图像调整器
    • 前交叉韧带
    • CMS
    3) 若你们的代码稳定一致(=在应用程序中并没有变化),我会选择软件包。如果你必须自定义它,我会为每个应用程序保留它的特定性


    这一切都取决于您的特定类。最好是查看整个项目和您遇到的问题。

    您所说的“模型”是什么意思?例如,类、NetteObject,我有一个日志模型,它在basePresenter中实现,并记录我需要记录的任何内容。或者我有一个扩展了Nette/Object的对象,它基本上是我的应用程序/模型中其他类的父类。它包含一组有用的函数和检查方法。接下来,以上一个应用程序为例,我构建了calendar,其中包含许多不同的日期/时间相关函数,还用于为前端创建数据结构。一些简单的代码可能会有帮助:你想从哪里加载什么?啊,现在我明白了!所以,基本上,主要的问题是它是否是特定应用程序的定制,以及类是否相关。例如,如果我选择某种CMS,它应该是lib,但如果我们谈论的是某种数据库迁移工具,我计划将其作为CMS的一部分使用,但有时作为其他应用程序的独立模块,我应该将其作为类保留,而不是为这一特定功能选择lib。对吗?在我看来,CMS太复杂了,不可能是lib。另一方面,拥有更多具有特定功能的库是一个好主意,比如db类、寻呼机等,CMS将从中组成。当然,你也可以在github上发布你的CMS应用程序,将其提供给其他人。数据库迁移工具是lib的一个很好的例子,它与composer一起安装,因为您可以与其他应用程序共享它。不应该有太多特定于一个应用程序的功能。但以UserModel为例,不管它在所有应用程序中的使用方式如何,它都不是lib的好选择。希望你能理解。