2012-03-04 2 views
1

В принципе, я начал изучать когнинификатор сегодня и купил книгу по этому вопросу. Книга ссылается на версию 1.7, а версия, с которой я работаю, - 2.1.Есть ли существенное различие между codeigniter 1.7 и последней версией?

Существует пример контроллера в книге, которая выглядит следующим образом:

<?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-файл из конфига.

EDIT: Вид:

<!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> 

Любая помощь будет массово оценили. Благодаря!

ответ

2

Было внесено много изменений - вы должны увидеть changelog, если вы не знаете, что именно.

Не зная точно, что вам скажет ваша книга, я могу дать вам несколько указаний относительно того, что нужно сделать, чтобы ваш код работал.

Во-первых, когда creating a controller в CI 2.1 вы должны написать его с помощью стиля 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, или то, что книга хочет, чтобы вы с ним делали.

+0

Спасибо за это. Так в чем же разница между методами php 4 и 5. Общественные и частные функции? –

+1

Ну, есть много различий. PHP5 больше ориентирован на объекты, чем PHP4; реализация намного чище. Я действительно думаю, что вы должны взглянуть на документацию: http://php.net/manual/en/language.oop5.php. – Repox

Смежные вопросы