Zend 模型类 - 选择被声明为静态方法的查询

Posted

技术标签:

【中文标题】Zend 模型类 - 选择被声明为静态方法的查询【英文标题】:Zend Model Class - Select queries being declared as static methods 【发布时间】:2012-05-23 21:23:26 【问题描述】:

我正在查看我继承的一些代码。 在所有模型类中 - 任何执行“选择”查询的方法都被声明为静态,而“插入”、“更新”、“删除”在同一个模型类中未声明为静态。

例如

require_once 'Zend/Db/Table/Abstract.php'; 类 Model_Course 扩展 Zend_Db_Table_Abstract 受保护的 $_name = '课程'; 公共静态函数 getCoursesByFaculty($faculty_id) $courseModel = 新的自我(); $select = $courseModel->select(); $select->setIntegrityCheck(假); $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); 返回 $courseModel->fetchAll($select);

将这些方法声明为静态方法有什么好的理由/优势吗?

感谢您的意见

【问题讨论】:

【参考方案1】:

我认为没有任何优势,而不是像 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;


【讨论】:

-1 用于破坏 OP 的代码。 $this 在静态方法中不起作用

以上是关于Zend 模型类 - 选择被声明为静态方法的查询的主要内容,如果未能解决你的问题,请参考以下文章

2020-01-08类和对象

Java中的静态类

Java基础——面向对象(内部类)

Java中静态代码块构造代码块的区别

036_面向对象_09_static变量和方法

静态对象成员会在所属类的析构函数被调用时自动析构吗?