2014-04-29 2 views
-3

MVC의 구조를 이해하려고 노력하고 있지만 그 곳을 우연히 발견했습니다.
해당 구조의 모든 페이지를 사용하는 전역 함수를 어떻게 통합해야합니까?PHP MVC에서 전역 메소드를 사용하는 방법

예를 들면;

나는 사이드 바에 이것을 표시하는 모든 페이지에 필요한 방법이 있습니다.

public function user_credit($userid){ 
    return $this->db->getSingleRow("SELECT * FROM user_credit WHERE userid = $userid"); 
} 

일부 페이지에는 모델 파일이 필요하지 않습니다. 모든 페이지의 모델을 만들고이 메서드를 모두 추가하고 싶지 않습니다.

내 솔루션;

1) globalFunc.php를 만들었으며 헬퍼 폴더에 저장했습니다. 내가 DB 연결 클래스 GlobalFunc 필요하기 때문에

globalFunc.php

// Extened 모델은 모델 {

function __construct(){ 
    parent::__construct(); 
} 
    public function user_credit($userid){ 
    return $this->db->getSingleRow("SELECT * FROM user_credit WHERE userid = $userid");} 

를 확장하고 내가 기본 컨트롤러에 loadHelper 방법을 추가 할 수 있습니다.

2) 모델 폴더에 globalFunc.php를 저장했습니다. 및 기본 컨트롤러에서 loadCustomModel 메서드를 추가했습니다.

그러나이 방법은 나를 만족시키지 못했습니다. 길을 따라 가야합니까?

+2

"MVC"는 ** "my very code"**의 머리 글자 어가 아닙니다. MVC 패턴은 응용 프로그램 계층 간의 정보 흐름에 대한 제약 조건을 정의합니다. 함수를 사용하든 사용하지 않든 관계없이 MVC 패턴에 ** NO ** 관계가 있습니다. 또한 모델은 클래스 또는 테이블 추상화가 아닙니다 **. –

답변

3

먼저 MVC 개념에 대해 더 읽으십시오. 너 거기 갈거야.

귀하의 질문에 : 다른 여러 리소스, 구성 요소 등에서 사용해야하는 리소스의 경우 일반적으로 서비스를 사용합니다. 어떤 경우에는 도우미가 좋은 해결책이기도합니다. 인스턴스 용 나뭇 가지와 같은 템플릿 엔진은 렌더링을 위해보기 도우미를 사용할 수 있습니다. 그러나 그것들은 매우 추상적이어야합니다.

서비스는 Dependency Injection을 사용하여 관리해야합니다. DI 컨테이너를 사용하여 필요한 서비스의 인스턴스를 제공하고이를 조작하는 데 사용할 수 있습니다.

Symfony2 Framework에는 사용할 수있는 훌륭한 DI 컨테이너 구성 요소가 있습니다. 그들은 또한 내가 생각하는 DI 개념에 좋은 Documentation Article을 가지고 있습니다.