2010-07-01 4 views
-1

PHP/CakePHP에서 재사용 가능한 코드를 작성할 수있는 방법을 알려줄 수 있습니까?cakePHP에 재사용 가능한 코드를 작성하는 방법은 무엇입니까?

+0

중복 된 http://stackoverflow.com/questions/268258/how-do-you-make-code-reusable – deceze

+0

하지만 cakePHP에서 몇 가지 도움말을 제공 할 수 있습니다 ........ – RSK

+0

@deceze 하나 이상의 컨트롤러에서 사용할 수있는 AppController에서 메소드를 작성하는 방법을 예제로 제공 할 수 있습니다. – RSK

답변

6

의 AppController

좋아 단일 [삭제] 함수를 작성 [방법], 내가 물린 것이다. 개별 컨트롤러에서 코드를 작성하는 것과 거의 똑같이 코드를 작성하면 , 으로 바뀝니다.

class AppController extends Controller { 

    var $components = array('Session'); 

    function delete($id) { 
     $model = $this->modelClass; // holds the primary model name 
     if (!$this->$model->delete($id)) { 
      $this->Session->setFlash("Couldn't delete $model record $id."); 
     } 
     $this->redirect($this->referer()); 
    } 
} 

Cake의 소스 코드를 통해 어떤 변수를 사용할 수 있는지 알아보십시오. 명확한 재사용이 가능한 구성 요소 및 동작에 대한 자세한 소스 코드를 읽어보고보다 구체적인 기술을 학습하십시오.

2

app_controller.php에서 메소드를 만들고 다른 컨트롤러에서 사용하십시오.

// app/app_controller.php 
public function _foo($params){ 
    // do something 
} 

// app/controllers/some_controller.php 
public function foo($params){ 
    $this->_foo($params); 
    // do something else 
} 

// app/controllers/other_controller.php 
public function foo($params){ 
    $this->_foo($params); 
} 
3

글쎄, 나는 아무도 구성 요소를 언급하지 않는다고 생각한다. 이것은 실제로 재사용 가능한 물건이 CakePHP에 있어야한다는 것을 의미한다. 적어도 내 의견으로는 컨트롤러가 유일하다. 모델이며 구성 요소는 컨트롤러에서 호출 할 재사용 가능한 코드를 저장하는 곳입니다.

클래스 내에서 코드를 재사용하는 경우 (클래스 외부에 실제 유틸리티가없는 경우) 실제로 수행하려는 작업에 따라 달라집니다. 구성 요소, 단지 클래스의 함수를 사용합니다. 그러나 하나 이상의 컨트롤러에서 거의 동일한 함수를 사용하여 자신을 발견하면 클래스에 넣습니다.

IMO 가장 좋은 방법은 그냥 클래스를 논리적 인 함수로 분해하려고 시도하고 클래스의 함수에서 나중에 구성 요소를 만드는 것에 대해서만 걱정하십시오. 즉, 다시 사용할 것인지 확실하지 않은 경우, 나중에 쉽게 수행 할 수 있기 때문에 처음에는 구성 요소로 만드는 추가 시간을 소비하지 마십시오 (그러나 조금 더 작업/얇음이 필요합니다. 그것을 통해 왕이) ...

당신이 미리 함수를 재사용 할 것이라는 것을 안다면 그냥 먼저 구성 요소에 넣으십시오.

(Cakephp의 다른 점은 모델, 컨트롤러, 구성 요소의 폴더 내에서 ... 당신이 자신의 폴더를 만들 수 있고 cakephp없이 파일을 넣을 수 있습니다. 당신이 컨트롤러의 무리를 가지고 있다면, 당신이 "사용자 프로파일 정보를 업데이트하는 것"이라고 생각하는 행동을하기위한 것이라면 컨트롤러에 대한 전체적인 올바른 디렉토리 (예 : 컨트롤러) 거기에 모든 것을 넣고 이것과 관련된 구성 요소 (구성 요소 디렉토리 내)에 대해서도 같은 작업을 수행 할 수 있지만이 폴더에서 컨트롤러를 호출하면 호출 URL에서 해당 폴더를 참조 할 필요가 없습니다. . 매우 지루한 작업을 절약하면서 수업 파일을 매우 체계적으로 유지하면서 편리하게 사용할 수 있습니다.)

+0

나는 Rick에 동의하며, 재사용을 계획하고있는 코드를 저장하기 위해 항상 사용자 지정 구성 요소를 사용합니다. 또한 서브 폴더 트릭에 대해 알지 못했습니다. 덕분에 편리 할 수도 있습니다. – Jonathan

+0

프로젝트에서 코드를 재사용하는 방법을 알기 위해이 토론을 시작했지만, 많은 프로젝트에서 코드를 재사용하도록 유도하고 있습니다. 고마워하고 더 많은 팁을 기다리고 – RSK

0

올마이티 플러그인을 잊지 마세요. 나는 이것이 주된 질문에 대한 언급에 약간 어긋난다는 것을 알고있다. 그러나 cakephp에서 코드 재사용의 궁극적 인 형태는 플러그인입니다.

+0

하지만 제발 어디서 플러그인을 사용하고 구성 요소를 사용하는 날 안내 할 수 있습니까 ??? – RSK

관련 문제