2013-09-02 3 views
0

중복 코드를 줄이기 위해 함수에 단편을로드하는 방법은 무엇입니까?코드 조각을 함수로로드

예를 들어 다음 코드를 사용하면; site_loader.php이 포함로

public function site() 
    { 
     command $this->load->model('site_loader'); 
     //Function specific code 
    } 

:

public function site() 
    { 
     $this->load->model('model_get'); 
     $data["results"] = $this->model_get->getData(__FUNCTION__); 
     $this->load->view('view_head', $data); 
     $this->load->view('view_nav'); 
     $this->load->view('view_content_' . __FUNCTION__, $data); 
     $this->load->view('view_footer'); 
    } 

어떻게 같은 것을 빛으로 줄일 수

 $this->load->model('model_get'); 
     $data["results"] = $this->model_get->getData(__FUNCTION__); 
     $this->load->view('view_head', $data); 
     $this->load->view('view_nav'); 
     $this->load->view('view_content_' . __FUNCTION__, $data); 
     $this->load->view('view_footer'); 

totymedli 제안에 따라 코드 작업. 당신이 정말로 이렇게 할 경우

Controller 
public function site() 
    { 
     $pagename = __FUNCTION__; 
     include 'resources/scripts/site_loader.php'; 
    } 

Site Loader 
<?php 
     $this->load->model('model_get'); 
     $data["results"] = $this->model_get->getData($pagename); 
     $this->load->view('view_head', $data); 
     $this->load->view('view_nav'); 
     $this->load->view('view_content_' . $pagename, $data); 
     $this->load->view('view_footer'); 
?> 

답변

-1

, 당신은 당신이 그것을 필요로 include보다 PHP 파일에 해당 코드를 복사 할 수 있습니다. 매뉴얼의 흥미로운 부분 :

파일이 포함되어 있으면 파일에 포함 된 코드가 포함 된 줄의 변수 범위를 상속받습니다. 호출 파일의 해당 행에서 사용 가능한 변수는 호출 된 파일 내에서 그 시점부터 사용할 수 있습니다. 그러나 포함 된 파일에 정의 된 모든 함수와 클래스는 전역 범위를 갖습니다.

당신이 원하는 코드는 포함합니다 :

<?php 
//site_loader.php 
$this->load->model('model_get'); 
$data["results"] = $this->model_get->getData(__FUNCTION__); 
$this->load->view('view_head', $data); 
$this->load->view('view_nav'); 
$this->load->view('view_content_' . __FUNCTION__, $data); 
$this->load->view('view_footer'); 
?> 

컨트롤러를 :

public function site() 
{ 
    include 'site_loader.php'; 
} 

참고 : 너무 require, require_onceinclude_once 있습니다. 프로젝트에 가장 적합한 것을 선택하십시오. Help for the choice.

+0

코드를 파일로 분리하여 downvote하려고합니다. 'include'에 의존하는 것은 실제 코드를 함수/클래스/메소드를 분리하여 필요에 따라 호출하는 것에 가깝지 않습니다. 어떤 사람들은 코드를 하나의 PHP 파일로 컴파일하는 접근법을 취합니다. 이것이 여러분의 접근 방식이 실패하게되는 곳입니다. 왜 전체 파일을 함께 실행하지 않고 코드를 논리적 인 조각으로 분리 할 수있을 때 인생을 복잡하게 만듭니다. 예, 파일의 값을 _return_하여 변수에 할당 할 수 있지만 매개 변수로 확장하는 것은 지옥처럼 추악합니다. – Tadeck

+0

@Tadeck 내가 알기에, 내가 '왜 이걸 정말로하고 싶으면'으로 시작했는지. 나는 방금 해결책을 제시했다. 어쩌면 나는 이것이 최선의 해결책은 아니라는 것을 조금 더 강조해야 할 것이다. 그러나 만약 당신이 그 질문에 기초한 오해가 있다면, 당신은 여전히 ​​새로운 대답으로 이것을 쓰고 나의 것보다 나은 해결책을 줄 수있다. – totymedli

+0

위의 작은 코드 조각을 각 뷰에 대해 반복해야하기 때문에 현재 약 40 개가 필요하며 약 30 개가 더 필요합니다.이 메서드를 사용하면 라이브러리 및 모델이 codeigniter에서 수행 할 수없는 작업을 수행했거나 적어도 어떤 방식 으로든 내가 할 수 없었고, 제 컨트롤러의 대량을 상당히 많이 줄였습니다. –

관련 문제