2016-08-19 2 views
1

나는 모든 샌드 박스 프로젝트에서 잠시 동안 구현해온 모델이 거의 없으며 생각이 듭니다. 상수 구현 대 몇 가지 모델의 차이점은 무엇입니까? 내 자신의 lib, 이론적으로 동일한 파일을 포함합니다.Nette : 모델 대 공급 업체 라이브러리

질문 # 1 : 실행 시간에 차이가 있습니까? & 라이브러리에서 일부 모델 개체와 같은 개체 사이에 페이지가로드됩니까?

질문 # 2 : 왜 일부 모델 대신 라이브러리를 사용해야합니까 (또는 그 반대)?

질문 # 3 :이 두 가지에 차이가 없다면, 더 쉬운 작곡가 구현을 위해 제 자신의 lib를 만들어야합니까, 아니면 일종의 맞춤 sandbox git rep with models이 더 좋은 옵션입니까?

+0

"모델"이란 무엇입니까? –

+0

클래스, NetteObjects, 예를 들어 나는 basePresenter에 구현 된 로그 모델을 가지고 있으며 로그 할 필요가있는 모든 것을 기록합니다. 또는 Nette/Object를 확장하고 기본적으로 내 App/Model의 다른 클래스의 부모 인 Object가 있습니다. 여기에는 유용한 기능과 검사 방법이 포함되어 있습니다. 다음으로, 마지막 앱의 예를 들어, 다른 날짜/시간 관련 함수가 많이 포함 된 프런트 엔드 용 데이터 구조를 만드는 데 사용 된 캘린더를 작성했습니다. –

+0

나는 본다. 최소한의 코드가 도움이 될 것입니다. 어디에서로드하고 싶습니까? –

답변

2
  1. 이것은 중요하지 않거나 무시할 수 있습니다. 수업은 항상 포함되어야합니다. 작곡가 인 autoload 또는 nette RobotLoader에 포함되어 있는지 여부는 중요하지 않습니다.
  2. 특정 기능이 다른 사람들을 도울 수있는 경우 라이브러리를 만들어 다른 사람을 도울 수 있습니다. 앱에 너무 구체적이거나 libs 디렉토리 또는 앱에서 직접 실행하는 경우 필요에 따라 나중에 쉽게 기능을 변경할 수 있습니다.
  3. 나는 둘 다 말할 것이다. 샌드 박스를 만들고 유지 관리하는 것이 많은 프로젝트에서 공유하는 lib보다 훨씬 쉽습니다. lib에서는 예를 들어 하위 호환성을 유지해야합니다. 또한 비 관련 클래스가 많은 경우 라이브러리에서 하나의 라이브러리를 만드는 것이 의미가 없습니다. Reather는 특정 기능을 구현하는 더 많은 라이브러리를 만듭니다. 예를 들어, LogModel을 포함하는 로깅 클래스. 그러나 시작하기 전에 이미 필요한 lib가없는 경우 검색 패키지 관리자를 사용해보십시오. 로깅의 경우 Monolog가 유용 할 수 있습니다. 귀하의 캘린더 클래스는 훌륭한 도서관 후보입니다.
+0

아, 이제 알 겠어! 따라서 기본적으로 주요 질문은 특정 앱의 맞춤 설정 여부와 수업 관련 여부입니다. 예를 들어 어떤 종류의 CMS를 사용한다면 lib이어야합니다. 그러나 우리가 CMS의 일부로 사용하는 일종의 데이터베이스 마이그레이션 도구를 예로 들어 보겠습니다. 다른 애플 리케이션을위한 독립적 인 모듈로, 나는이 특별한 기능을 위해 lib를 사용하기보다는 클래스로 유지해야한다. 옳은? –

+0

제 생각에 CMS는 너무 복잡하여 lib가 아닙니다. 다른 한편으로는, db 클래스, 페이저 (pager) 등과 같이 CMS가 구성 할 특정 기능을 가진 libs를 더 가지고 있다고하는 것이 좋습니다. 물론 github에 CMS 앱을 게시하여 다른 사람들에게도 제공 할 수 있습니다. 데이터베이스 마이그레이션 도구는 다른 응용 프로그램과 공유 할 수 있기 때문에 작곡가와 함께 설치되는 lib의 훌륭한 예입니다. 하나의 앱에만 적용되는 많은 기능이 있어서는 안됩니다. 그러나 예를 들어, UserModel과 상관없이 모든 응용 프로그램에서 같은 방식으로 사용되므로 lib에 적합하지 않습니다. 당신이 이해하기를 바랍니다. –

1

나는 완전히 상황을 이해하지 않더라도, 나는 최선을 가능한 한 대답하려고합니다 : 정말, 그것은 위치에 관계없이 클래스 자동 로딩,이다)

1

2) 일부 클래스는 공통적 인 의미를 가지며, 예를 들어 일부 디렉토리로 추상화 될 수 있다는 것을 알게되면 라이브러리로 코드를 이동하는 것이 좋습니다.

  • 파일 관리자
  • ImageResizer
  • ACL
  • CMS
  • ...

3) 코드 (= 응용 프로그램에서 변경되지 않음) 안정적이고 일관성이있을 경우, 나는 패키지를 사러 갈거야. 당신이 그것을 사용자 정의해야한다면, 나는 모든 애플 리케이션을 위해 그것을 특정하게 유지할 것이다.

이것은 모두 특정 클래스에 따라 다릅니다. 가장 좋은 방법은 전체 프로젝트와 문제를 보는 것입니다.

관련 문제