在PHP中使用抽象类

在PHP中使用抽象类,php,zend-framework,Php,Zend Framework,我是PHP新手,尝试创建一个包含抽象和非抽象方法的抽象类,然后扩展该类以实现抽象方法。以下是我的两个类文件的一部分: <?php require_once 'Zend/Db/Table/Abstract.php'; abstract class ATableModel extends Zend_Db_Table_Abstract { abstract static function mapValues($post); abstract static function ge

我是PHP新手,尝试创建一个包含抽象和非抽象方法的抽象类,然后扩展该类以实现抽象方法。以下是我的两个类文件的一部分:

<?php
require_once 'Zend/Db/Table/Abstract.php';
abstract class ATableModel extends Zend_Db_Table_Abstract {

    abstract static function mapValues($post);
    abstract static function getTableName();

    public static function newEntry($post)  {  
        $db = Zend_Db_Table_Abstract::getDefaultAdapter();
        $data = mapValues($post, true);
        $db->insert(getTableName(), $data);
        $id = $db->lastInsertId();
        return $id;  
    }

    public static function getEntry($id){
        $db = Zend_Db_Table_Abstract::getDefaultAdapter();
        $db->setFetchMode(Zend_Db::FETCH_OBJ);
        return $db->fetchRow("
            SELECT *
            FROM ".getTableName()." 
            WHERE ID = '".(int)$id."'
            "
        );
    }

    public static function editEntry($id,$post) {  
        $db = Zend_Db_Table_Abstract::getDefaultAdapter();
        $data = mapValues($post);
        $db->update(getTableName(), $data, " ID = '".(int)$id."' ");
    }

    public static function deleteEntry($id) {
        $db = Zend_Db_Table_Abstract::getDefaultAdapter();
        $db->delete(getTableName()," ID = '".(int)$id."' ");
    }
}
?>

我的猜测是,我加载文件的顺序,或者这些文件相对于其他文件的位置都有问题。然而,我不知道如何从这里开始。建议?

您没有将该文件包含在您的AtalModel定义中


<?php
// in your test
require_once 'Zend/Db/Table/Abstract.php'; // <- should be the file with ATableModel


您没有将该文件包含在ATableModel定义中


<?php
// in your test
require_once 'Zend/Db/Table/Abstract.php'; // <- should be the file with ATableModel


在子类中,必须包含()或require()(或require_once())要扩展的类文件。我不熟悉Zend,但是,如果该框架应该包括同一目录中的所有文件,我也不知道


尝试添加一些代码以确保包含ATableModel的文件被包括在内。

在子类中,必须包含()或require()(或require_once())要扩展的类文件。我不熟悉Zend,但是,如果该框架应该包括同一目录中的所有文件,我也不知道


尝试添加一些代码以确保包含ATableModel的文件被包括在内。

谢谢,我知道这对任何在这方面比我有更多经验的人来说都很简单!谢谢,我知道这对任何一个在这方面比我更有经验的人来说都很简单!如果您选择使用自动加载,ZF仅自动加载自己的类。否则,您需要提供自己的自动加载程序。您可以使ZF自动加载任何类-如果您选择使用自动加载,请参阅ZF仅自动加载自己的类。否则,您需要提供自己的自动加载程序。您可以使ZF自动加载任何类-请参阅

<?php
// in your test
require_once 'Zend/Db/Table/Abstract.php'; // <- should be the file with ATableModel