2008-09-01 1 views
5

지금은보기에 장점이 없다고 생각하는이 프로젝트의 다른 프로그래머와 논쟁에 휘말리게 된 것 같습니다. 그래서보기를 사용하거나보기를 사용하지 않으려면

$draw = new Draw; 
$nav = $draw->wideHeaderBox(). 
$draw->left(). 
    $draw->image(). 
     Image::get($image,60,array('id'=>'header_image')). 
    $draw->imageEnd(). 
$draw->leftEnd(). 
$draw->left(10). 
    '<div id="header_text">'. 
     self::defaultSectionText(). 
    '</div>'. 
$draw->leftEnd(). 

와 (이 BTW 컨트롤러에) : 그는 PHP 이런 식으로 뭔가를 보이는 시스템을 제안한다. 이제이 사실에 대한 그의 주장은 실제로 의미가 있습니다. 재 설계가 있다면 HTML을 한 곳에서 변경하면 어디에서든지 자동으로 변경된다는 것입니다. 그러나 어떤 이유로이 방법은 여전히 ​​나에게 잘못된 방식으로 문지르며,이 방법에 대한 견해에 어떤 ​​장점이 있습니까? 나는 손으로 HTML을 다시 타이핑 할 필요가 없다는 것을 의미한다.

답변

5

HTML 시간 절약 기능은 유용하지만 직관적이고 이해하기 쉬운 경우에만 유용합니다. new Draw을 인스턴스화하는 것은 자연스럽지 않습니다. 또한 wideHeaderBoxleft은 시스템을 잘 아는 사람에게만 의미가 있습니다. 그리고 만약에 인 경우에, 당신의 동료와 같은 재 설계? wideHeaderBox이 매우 좁아 진다면 어떨까요? PHP 메소드에서 생성 된 마크 업 (및 스타일, 추정 가능)을 변경하지만 코드를 호출하는 데 매우 정확한 메소드 이름은 남겨 둡니까?너희들은 단지 HTML 생성을 사용하는이있는 경우

, 당신은 그것을보기 파일에 산재 사용해야하고, 유용/정말 필요한 어디 당신은 이런 식으로 뭔가로 사용한다 :

HTML::link("Wikipedia", "http://en.wikipedia.org"); 
HTML::bulleted_list(array(
    HTML::list_item("Dogs"), 
    HTML::list_item("Cats"), 
    HTML::list_item("Armadillos") 
)); 

위의 예에서 메소드 이름은 시스템에 익숙하지 않은 사람들에게 실제로 의미가 있습니다. 좀처럼 방문하지 않는 파일로 돌아가서 자신이하는 일이 무엇인지 궁금해 할 때도 사람들이 더 이해할 수 있습니다.

1

그가 사용하는 인수는 에 필요한 인수입니다.입니다. 둘 다 한 곳에서만 변경됩니다. 그러나 그의 버전에서는보기 마크 업을 비즈니스 코드와 혼합합니다.

더 많은 템플릿 디자인을 사용하는 것이 좋습니다. PHP에서 모든 비즈니스 로직을 수행하고 페이지에 필요한 모든 변수를 설정하십시오. 그런 다음 페이지 마크 업에서 해당 변수를 참조하게하십시오 (비즈니스 로직이 전혀없는 경우).

현명하게 보셨나요? http://smarty.php.net

1

나는 과거와 같은 일을 해 왔으며 시간 낭비였습니다. 예를 들어, 기본적으로 HTML로 이미 할 수있는 모든 것에 대한 래퍼를 작성해야하며 일부 작업은 잊어 버릴 수 있습니다. 레이아웃에서 뭔가를 바꿀 필요가있을 때 "쏴, 나는 그걸 잊어 버렸어. 이제 다른 방법을 코딩하거나 다른 매개 변수를 추가해야 해."라고 생각할 것이다.

궁극적으로 아무도 알지 못하거나 앞으로 몇 개월을 사용하는 방법을 기억하는 HTML을 생성하는 수많은 함수/클래스 모음을 갖게됩니다. 새로운 개발자는이 시스템을 사용하기 위해 당신을 저주 할 것입니다. 왜냐하면 그들은 무엇인가를 바꾸기 전에 그것을 배워야하기 때문입니다. 대조적으로, 더 많은 사람들이 당신의 추상 HTML 드로잉 클래스보다 HTML을 알고있을 것입니다 ... 그리고 때로는 순수한 HTML로 손을 더럽 히면됩니다!

1

솔직히 따라하기가 매우 어렵고 힘들어 보이며 일부 코드는 레이아웃 정보와 매우 흡사합니다.

우리는 가능한 한 로직 출력을 항상 분할하려고합니다. 그러나보기와 데이터가 다른 부분과 어떻게 구별되어야하는지 (예 : 간단한 전자 상거래 사이트에서 각 제품 옆에 재고 수준을 표시하기로 결정할 수도 있습니다. 이는 분명히 적절한 HTML을 추가하기 위해 뷰를 변경하고 비즈니스 로직이 이동하여 주식에 대한 가치를 파악하는 것을 포함합니다).

2 개의 파일을 유지 관리하려는 생각이 너무 많으면 "데이터 수집"부분과 "표시보기"부분으로 분할하여 파일 수를 늘리지 않고 대부분의 이점을 얻으십시오. 당신은 관리해야합니다.

1

나는 항상 HTML로 직접 작업하는 것이 훨씬 쉽다는 것을 알게되었다. Theres 덜 하나의 추상화 레이어 (html -> 실제 웹 페이지/PHP 함수 -> HTML -> 실제 웹 페이지) 그때 당신은 HTML에서 작업을 처리합니다.

나는 정말로 '한 곳에서 변경해야한다'는 것이이 경우에는 효과가 없을 것이라고 생각합니다. 이것은 함수의 출력을 변경하려는 경우가 여러 번 있기 때문에 한 곳에서만 가능하기 때문입니다. 물론 인수를 사용할 수는 있지만 곧 다스의 인수를 갖는 일부 함수로 끝날 것입니다. 왝.

템플릿 언어/시스템을 염두에두면 종종 하위 템플릿을 포함시켜 재사용 가능한 HTML 블록을 가질 수 있습니다.

결론은 회사에서 막 시작하여 어디서나 코드를 본다면 내 생각에 '젠장!' 다시 새로운 직업이 필요해. '

관련 문제