2013-01-03 27 views
0

我想在CI模仿這些簡單的PHP類定義最好的方式來實現標準的PHP類CI中與控制器

<?php 
class Student 
{ 
    private $name; 

    public function __construct($name) { 
     $this->name = $name; 
    } 

    public function getName() { 
     return $this->name; 
    } 
} 

class SportsStudent extends Student { 

    private $sport; 

    public function __construct($name) { 
     parent::__construct($name); 
     $this->sport = "Tennis"; 
    } 

    public function getSport() { 
     return $this->sport; 
    } 
} 

$s1 = new Student("Joe Bloggs"); 
echo $s1->getName() . "<br>"; 

$s2 = new SportsStudent("John Smith"); 
echo $s2->getName() . "<br>"; 
echo $s2->getSport() . "<br>"; 
?> 

我想知道如何最好地接近它,我曾嘗試創建這兩個類的控制器,但有繼承問題,我被告知最好是擴展CI_Controller,但無法讓我的頭,它似乎矯枉過正,不被推薦。

最好只保留這些標準類並從我的控制器中調用它們?

這是我第一次在系統中嘗試使用MVC,也是我第一個CI項目,很高興有一些指針。

+0

請在問題中包含代碼示例(尤其是相對較短的代碼),而不是通過對該頁面的未來訪問者可能不適用的鏈接;-) – DaveRandom

回答

1

這些類應該表示爲模型,而不是控制器。所以,你會做這樣的事情:

class Student extends CI_Model { 
    ... 
} 

class SportsStudent extends Student { 
    ... 
} 

你應該把學生模型在application/core文件夾(C12 +)或application/libraries文件夾(CI 1.8或更低 - 以及改變CI_Model到只是Model)。

+0

我也想知道如何將構造函數從SportsStudent傳遞給Student ?通常我會做SportsStudent(parent :: __構造($ var1,$ var2)),但它似乎CI不喜歡這個? –

+0

另外,我是否將Student和SportsStudent放在應用程序/內核中? –

+0

好吧,我設法解決了這個問題。我需要爲SportsStudent自動加載我的學生課程才能得到認可。 –

相關問題