내 간단한 사이트에서 이동 경로를 만들고 있습니다.
헬퍼 클래스가 있습니다. 다음과 같이 사용합니다 (예제).
$Breadcrumbs = new Breadcrumbs();
$Breadcrumbs->add(new Breadcrumb("/", "page1"));
$Breadcrumbs->add(new Breadcrumb("/", "page2"));
$Breadcrumbs->add(new Breadcrumb("/", "page3"));
$breadcrumb->show();
다음을 반환합니다.
<ol class="breadcrumb">
<li><a href="/">page1</a></li>
<li><a href="/">page2</a></li>
<li class="active">page3</li>
</ol>
그래서 내 프로젝트 switch-case
에는 파일을 포함하는 몇 가지 구성이 있습니다. 이 파일에서는 $breadcrumbs->add(...)
. 이 코드 :
<div class="container body">
<? $Breadcrumbs->show();?>
<?
$page = isset($_GET['page']) ? $_GET['page'] : null;
switch($page):
case "suppliers":
require_once($DOCUMENT_ROOT."/modules/suppliers.php");
break;
default:
require_once($DOCUMENT_ROOT."/modules/default.php");
break;
endswitch;
?>
<? $Breadcrumbs->show();?>
</div>
이 결과를 제공합니다.
음, 작동해야하는 것처럼 작동합니다. 내가 사용하고 $breadcrumbs->add(...)
내가 전화 한 후 파일을 필요에 $breadcrumb->show()
왜 첫번째 호출이 반환 빈 결과 처음 이잖아. 두 번째 호출은 show()
모든 이동 경로가 추가 된 후이므로 좋은 결과를 반환합니다.
문제는 switch
블록 이전 에 올바른 콘텐츠로 이동 경로를 출력하는 방법 입니다. 버퍼 나 idk가 필요할까요?
이것은 논리를 프리젠 테이션에서 분리하는 것이 좋은 이유에 대한 좋은 예입니다. 부스러기 링크에 대한 멋진 추상화가 있지만 다른 코드가 작동하는 대신 진행되는대로 출력되기 때문에 제대로 사용할 수 없습니다. 추상적 인 데이터로.
당연히 현재 구조를 버리고 로직과 디스플레이를 새로운 프레임 워크로 직접 이식 할 수 있지만, 현재 위치에서 마이그레이션하려는 경우 한 가지 접근 방식이 있습니다.
echo
또는의 모든 현재 사용 ?>
을와 같은 문자열에 대한 연결로 바꿉니다 $results['generic_output']
. 이는 출력을 버퍼링하는 것과 실질적으로 같 $breadcrumbs
으며 언제든지 기존 추상화를 사용할 수있을만큼 충분합니다 . 이 단계에서 "템플릿"은 대부분 echo $results['generic_output']
, 그리고 이미 한곳에 수집 된 상용구 머리글 및 바닥 글로 구성됩니다 .$results['sidebar_content']
의 내용 만으로를 만드십시오 . 레이아웃을위한 상용구는 템플릿에 들어갈 수 있으며 코드 중복의 양을 줄였습니다.이것이 완벽한 프레임 워크로가는 길이나 상황에 대한 확실한 해결책이 아니라 기존 코드 (및 기존 사고)를 올바른 방향으로 구성하는 한 가지 방법이라는 점을 강조하고 싶습니다.
위의 "템플릿"은 출력을 생성 ?>
하거나 사용하는 PHP 파일 세트 echo
일 수도 있고 Smarty 또는 Twig와 같은 전용 템플릿 시스템 일 수도 있습니다. 실제로 분리의 요점은 나중에 그 앞에서 마음을 바꿀 수 있다는 것입니다. 코드 모듈의 결과는 Smarty 또는 Twig가 입력으로 필요한 데이터 배열이 될 것이기 때문입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다