我正在查看我继承的一些代码。 在所有Model类中 - 执行“Select”查询的任何方法都已声明为static,因为“insert”,“update”,“delete”在同一Model类中未声明为static。
例如
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); } }
将这些方法声明为静态有什么好的理由/优势吗?
感谢您的输入
答案 0 :(得分:0)
我认为没有任何优势,而不是像Modelclass :: function()那样轻松调用它 顺便说一下,我发现了一些调整代码的方法
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;
}