PHP ile Soyut sınıflarını kullanma

2 Cevap php

Ben PHP için yeni ve soyut ve soyut olmayan yöntemler bir karışımı ile bir Özet sınıf oluşturmak, ve sonra soyut yöntemleri uygulamak için sınıfını genişletmek için çalışıyordu. Aşağıdaki benim iki sınıf dosyaları bölümleri olan:

<?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."' ");
    }
}
?>

Aşağıdaki gibi sınıf çocuk görünüyor:

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

    public static function getTableName() 
    {
    	return 'TESTING';
    }

    public static function mapValues($post) 
    {
    	$data = array (
    		'test_description'		=> htmlentities($post['testDescription'])
    	);
    	return $data;
    }
}
?>

Her iki dosya birbirlerine aynı dizin göreli bulunmaktadır. Benim uygulamayı çalıştırmayı denediğinizde, aşağıdaki hatayı alıyorum:

Fatal error: Class 'ATableModel' not found in /var/www/testApp/application/models/testing.php on line 20

Benim tahminim ben dosyaları yükleme, ya da bu dosyalar birbirine akraba, bulunduğu ile kulüpler bu da sipariş ile yanlış bir şey var olmasıdır. Ancak, burada devam etmek nasıl emin değilim. Önerileriniz?

2 Cevap

Sen ATableModel tanımı ile dosyayı dahil etmiyoruz.


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

Çocuğunuz sınıfında eklemek () veya () gerektiren (veya Require_once ()) sınıf dosyası uzanan gerekir. Ancak Zend ile aşina değilim, ve bu çerçeve aynı dizindeki tüm dosyaları dahil etmek gerekiyordu eğer, bilmiyorum.

ATableModel içeren dosyanın dahil edildiğinden emin olmak için bazı kod eklemeyi deneyin.