codeigniter 1.7和最新版本之间是否存在重大差异?

时间:2012-03-04 20:29:50

标签: php model-view-controller oop codeigniter

基本上,我今天开始学习codeigniter并买了一本关于这个主题的书。这本书引用了1.7版本,我正在使用的版本是2.1。

本书中有一个示例控制器,如下所示:

<?php
class Start extends CI_Controller {

var    $base;
var    $css;


    function Start(){ 

        parent::CI_Controller();

        $this->base = $this->config->item('base_url');
    $this->css = $this->config->item('css');      

        }            

function hello($name)

{

$data['css'] = $this->css;

$data['base'] = $this->base;

$data['mytitle'] = 'Welcome to this site';

$data['mytext'] = "Hello, $name, now we're getting dynamic!";
    $this->load->view('testview', $data);

   }  
}

但是只有当我删除以下功能时它才会起作用:

function Start(){ 

        parent::CI_Controller();

        $this->base = $this->config->item('base_url');
    $this->css = $this->config->item('css');      

        }

有人知道为什么吗?如果是这样,我如何从配置中调用我的css文件。

编辑:观点:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Web Test Site</title>
<link rel="stylesheet" type="text/css" href="<?php echo $base . "/" . $css; ?>">
</head>
<body>

<h1><?php echo $mytitle; ?></h1>
<p class='test'> <?php echo $mytext; ?> </p>
</body>
</html>

任何帮助都会受到大力赞赏。谢谢!

1 个答案:

答案 0 :(得分:2)

有很多变化 - 如果你不知道到底是什么,你应该看changelog

如果不确切知道你的书会告诉你什么,我只能给你一些关于如何使你的代码工作的指示。

首先,当CI 2.1中的creating a controller时,您应该使用PHP5 OOP样式编写它 - 而不是像您在示例中所做的那样使用PHP4 OOP样式。

一个简单的例子:

<?php
class Start extends CI_Controller {

    public function index()
    {
        echo 'Hello World!';
    }
}
?>

现在这是你的基本控制器,只是回应'Hello World!'访问index.php/start时。
如果您需要执行某些操作,获取配置变量或加载某些模型/库,然后再转到index()方法,则应创建一个__construct()方法,该方法在Start控制器实例化时调用。这个__construct()方法需要从CI_Controller(您要扩展的父级)调用构造。您可以通过在自己的构造方法中键入parent::__construct();来实现此目的:

<?php
class Start extends CI_Controller {

    public function __construct()
    {
      parent::__construct();
      //call models, variables, whatever here
    }

    public function index()
    {
        echo 'Hello World!';
    }
}
?>

这基本上就是让你的控制器工作所需要知道的。

我不知道'从配置中调用你的css文件'是什么意思 - 我不知道css配置项包含什么,或者你想用它做什么。