문제:
Laravel에는 SubmitPerformanceController와 PrintReportController라는 두 개의 컨트롤러가 있습니다. SubmitPerformanceController 내의 PrintReportController에서 getPrintReport 메소드를 호출하려고 합니다. 이를 어떻게 달성할 수 있습니까?
답변:
Laravel 5의 컨트롤러 전체에서 컨트롤러 메서드에 액세스하는 여러 가지 접근 방식이 있습니다.
메서드 1: app() Helper 사용
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
이 접근 방식은 PrintReportController 클래스 인스턴스를 검색하고 해당 getPrintReport 메서드를 직접 실행합니다. 작동하지만 조직 문제로 인해 권장되지 않습니다.
방법 2: 상속
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
PrintReportController를 확장하면 SubmitPerformanceController가 getPrintReport를 포함한 모든 메서드를 상속합니다. 그러나 이 접근 방식은 필요하지 않을 수 있는 다른 모든 메서드도 상속합니다.
방법 3: 특성
특성(예: app/Traits) 생성이 고려됩니다. the最佳做法:`
<code class="php">trait PrintReport { public function getPrintReport() { // ... } } class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
특성을 사용하여 SubmitPerformanceController는 컨트롤러 메서드(예: $this->getPrintReport())로 getPrintReport 메서드에 액세스할 수 있습니다. SubmitPerformanceController와 PrintReportController 모두 이 방법으로 getPrintReport에 액세스할 수 있습니다.
위 내용은 Laravel 5에서 컨트롤러 메소드에 액세스하는 방법: 메소드 및 모범 사례 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!