2012-11-04 2 views
1

PHP 프로젝트를 OOP로 다시 코딩하기 시작했습니다. 내가 많은 사람들 사이에서 해결할 수없는 한 가지 방법은 동적 선택 목록을 만드는 것입니다. 나는 많은 조회 선택 목록을 만들 수 있습니다. 그것에 대해 가장 좋은 방법은 무엇입니까?PHP OOP를 사용하여 선택 목록을 만드는 방법

내 모든 일반 데이터베이스 쿼리가있는 DatabaseObject 클래스를 만들었습니다. 여기에 추가하거나 특수 수업을 만드나요? 어떻게 코딩해야합니까?

+2

왜 사방'global' **를 사용하여 보관하지 **!? OOP가 아닙니다. –

답변

0

메서드에 전달 된 연관 배열을 반복하여 HTML 선택/옵션보기를 반환하는 메소드를 만들면 ...? 이 어쩌면 같은 뭔가 :

public static function viewSelect($name = "select", $arr_options = array()) { 
    $html = "<select name='$name'>\n"; 
    foreach ($arr_options as $key => $val) { 
     $html .= "<option value='$key'>$val</option>\n"; 
    } 
    $html .= "</select>\n"; 
    return $html; 
} 

가 그럼 그냥이 방법으로 데이터베이스 쿼리 중 하나에서 결과를 전달합니다. 이 메소드를 원하는 클래스에 넣을 수 있습니다.

0

또한

공공 정적 기능 viewSelect ($ 이름 = "선택", $ arr_options = 배열() 선택 $) 옵션 기능 {

$selectedhtml = ""; 
$html = "<select name='$name'>\n"; 
foreach ($arr_options as $key => $val) { 

if($key == $selected) $selectedhtml = "selected"; 

    $html .= "<option value='$key' $selectedhtml>$val</option>\n"; 
} 
$html .= "</select>\n"; 
return $html; } 
1

을 선택 추가 할 수 있습니다 확실히 셀렉트리스트를 객체로 모델링 할 것입니다. 왜냐하면 그것은 캡슐화 될 수있는 잘 정의 된 책임을 가지고 있기 때문입니다. 가능한 한 분리 된 것으로 유지하여 DatabaseObject에서 유지하므로 해당 클래스의 변경 사항이 다른 클래스에 영향을주지 않습니다. 예를 들어 고려 :

class SelectList 
{ 
    protected $options; 
    protected $name; 

    public function __construct($name, $options) 
    { 
     $this->options = $options; 
     $this->name = $name; 
    } 

    public function render() 
    { 
     $html = "<select name='" . $this->name . "'>\n"; 
     foreach ($this->options as $option) 
     { 
      $html .= $option->render(); 
     } 
     $html .= "</select>\n"; 
     return $html; 
    } 
} 

class SelectListOption 
{ 
    protected $label; 
    protected $value; 
    protected $isSelected; 

    public function __construct($label, $value, $isSelected = false) 
    { 
     //Assign the properties 
    } 

    public function render() 
    { 
     $html .= '<option value="' . $this->value . '"'; 
     if ($this->isSelected) 
     { 
     $html .= ' selected="selected" '; 
     } 
     $html .= '>' . $this->label . "</option>\n"; 
    } 
} 

나는 일이 방법을 모델링에 대해 좋아 한 것은 당신이 알고 있기 때문에 새로운 기능을 추가 (선택/선택되지 않은 항목 또는 장애인 속성에 대한 예를 들어, CSS 스타일)이 매우 쉽다는 점이다 새로운 지형지 물이 속한 대상 또한 이러한 종류의 "작은"객체를 사용하면 단위 테스트를 작성하는 것이 매우 쉽습니다.

HTH

0
public function get_posts() 
{ 
    $query="select * from tbl_posts"; 
    $result= mysql_query($query); 
    $i=0; 
    while($data= mysql_fetch_assoc($result)) 
    { 
     foreach($data as $key=>$value) 
     { 
      $info[$i][$key]=$value; 
     } 
     $i++; 
    } 
    return $info; 


} 
관련 문제