2012-10-02 5 views
9

Ich habe eine Klasse, die mehrere abstrakte Methoden implementiert. Als ich diese Klasse erweitere ich folgende fatale Fehlermeldung:Fehler: Klasse muss abstrakt deklariert werden oder die verbleibenden Methoden implementieren

Class CI_Controller_Rest contains 6 abstract methods and must therefore be declared abstract or implement the remaining methods 

Die Klasse mit abstrakten Methoden:

class CI_Controller_Rest extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 

Die Klasse, wo ich CI_Controller_Rest verlängern:

class Welcome extends CI_Controller_Rest { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() {} 

    public function get() {} 

    public function head() {} 

    public function post() {} 

    public function put() {} 

    public function delete() {} 
} 

Was soll ich mehr tun als das?

+3

Der Fehler sagt, die soution! Es gibt nicht viel hinzuzufügen ... Sie müssen diese Klasse (CI_Controller_Rest) als abstrakt deklarieren, ansonsten müssen Sie die Implementierung für diese Methoden bereitstellen ... – obe6

+1

@ obe6 oh right! Wie habe ich das vermisst? Ich dachte, ich habe CI_Controller_Rest in abstrakt geändert. Recht! – Andrew

Antwort

20

Wenn eine Klasse eine oder mehr abstrakte Funktionen hat, it MUST be declared as an abstract class:

abstract class CI_Controller_Rest extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 
+3

Äh, du warst 10 Sekunden schneller :) – S3Mi

0
abstract class CI_Controller_Rest extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 
+11

Bitte poste den Code nicht ohne Erklärung – JvdBerg

0

CI_Controller_Rest muss eine abstrakte Klasse sein, weil es abstrakte Methoden enthält

abstract class CI_Controller_Rest extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 
Verwandte Themen