컨트롤러 A에서이 컨트롤러와 관련이없는 모델을로드합니다. 하나의 변수로 제어기 B의 모델 이름을 관리하는 데 관심이 있으므로 테이블/모델 B의 이름이 변경되면 많은 행을 수동으로 변경할 필요가 없습니다. 어떻게 내가 'ModelB'명시 적으로 써 단어 대신에 변수 이름을 사용합니까 ", COMMENT # 1"을 주석 라인의 경우 :CakePHP : 컨트롤러에서 테이블 이름을 하나의 변수로 관리하기
public $modelBName = 'ModelB';
public function controller_a_function() {
$this->loadModel($this->modelBName); // I use the variable here for model B
$this->ModelB->model_b_function(); // COMMENT #1
}
질문 : 아래의 예를 들어
컨트롤러 A의 코드? 이 줄은 코드 전체에 여러 번 나타나며 가능하면 변수 $modelBName
을 사용하고 싶습니다. ModelB
은 변경되지 않을 가능성이 있지만 어떤 이유로 든 여러 행을 편집하는 대신 하나의 변수 만 변경하는 것이 좋습니다.
안녕하세요, 중괄호가 작동합니다. 나는 이것이 좋고 일반적인 관행이라면 궁금해한다. 나는이 일을하는 다른 사람의 코드를 보지 못했다. 그들은 모델을 사용할 필요가있을 때마다'$ this-> ModelName-> someFunction'을 항상 수행한다. 어떤 생각? – musicliftsme
일반적인 '$ uses'배열을 사용하면 모델이 이미로드되어 있으므로 수동으로 모델을로드 할 필요가 없습니다. 모델 이름에 변수를 사용할 때 이점이별로 없습니다. IMO는 현재 작업하고있는 모델을 '확실하지'않게 만듭니다. 예 : $ this-> User-> save()를 호출하면 $ this-> {$ this-> modelName} -> save()보다 훨씬 명확합니다. – thaJeztah
모든 동작이 컨트롤러에서 사용되는 전체 모델 세트를 필요로하지 않기 때문에 나는 단지'$ uses' 배열 대신에 컨트롤러 액션에서'loadModel ('model_name')'을 사용하고 있습니다. 나는 이것에 가독성을 가지고 가고 제안을 취할 것이라고 생각한다. – musicliftsme