2013-01-03 88 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自动加载我的学生课程才能得到认可。 –

相关问题