2012-05-16 2 views
0

내가 상속 한 코드를보고 있습니다. 모든 Model 클래스에서 "Select"쿼리를 수행하는 모든 메서드는 동일한 Model 클래스에서 "insert", "update", "delete"가 정적으로 선언되지 않은 경우 정적으로 선언되었습니다. 예를젠드 모델 클래스 - 정적 메서드로 선언 된 쿼리 선택

 
require_once 'Zend/Db/Table/Abstract.php'; 

class Model_Course extends Zend_Db_Table_Abstract { 

protected $_name = 'course'; 
public static function getCoursesByFaculty($faculty_id) 
{ 
    $courseModel = new self(); 
    $select = $courseModel->select(); 
    $select->setIntegrityCheck(false); 
    $select->from('course', 'course.*'); 
    $select->joinLeft('course_faculty', 'course.course_id = course_faculty.course_id'); 
    $select->order(array('title')); 
    $select->where('faculty_id = '.$faculty_id); 
    return $courseModel->fetchAll($select); 
} 
} 

를 들어

정적으로 이러한 방법을 선언하는 좋은 이유/장점이 있습니까? 내가 어떤 이점을 생각하기보다는 Modelclass처럼 쉽게 전화 해달라고

답변

0

귀하의 의견

감사합니다 :: 기능() 그런데 난 당신의 코드를 꼬집는하는 몇 가지 방법을 발견

require_once 'Zend/Db/Table/Abstract.php'; /*Actually this require is not required if you configure your includePaths correctly*/ 

class Model_Course extends Zend_Db_Table_Abstract { 

protected $_name = 'course'; 
public static function getCoursesByFaculty($faculty_id) 
{ 

    $select = $this->select(); 
    $select->setIntegrityCheck(false); 
    $select->from($this, 'course.*'); 
      ->joinLeft('course_faculty', 'course.course_id = course_faculty.course_id'); 
      ->order(array('title')); 
      ->where('faculty_id = ?',$faculty_id); 
    $rows = $this->fetchAll($select); 
return (!empty($rows)) ? $rows : null; 

} 
+0

1 OP 코드를 깨기 위해 가능한 SQLinjection –

+0

-1을 수정했습니다. $ this는 정적 메서드에서 작동하지 않습니다. – DarkMukke

관련 문제