Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] problem z dziedziczeniem?
bfcior
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.11.2007

Ostrzeżenie: (0%)
-----


Witam, mam dość nietypowy problem.

Stworzyłem sobie rozszerzenie głównego kontrolera Controller we własnej klasie MY_Controller.php która jest umieszczona tak jak to mówi dokumentacja application/libraries.

Klasa wygląda tak:
Kod
<?php

class Controller extends Controller_Core
{
     protected $db;

     public function __construct()
     {
         parent::__construct();
         $this->db = Database::instance();
     }

     /*
      * Prepare page content and show it on page
      */
     public function prepare_page()
     {
         $view = new View('template');
         $view->render(TRUE);
     }
}

?>


I teraz pytanie. po stworzeniu np. klasy main w folderze /controllers/main.php w pewnym momencie wywołuję metodę prepare_page();

Załóżmy, że klasa wygląda tylko tak (aby jak najprościej zademonstrować mój problem):

Kod
<?php defined('SYSPATH') or die('No direct script access.');
  
   class Main_Controller extends Controller {
  
       public function index() {
           $this->prepare_page();
       }
   }
   ?>

Wynikiem tego jest wyświetlenie się strony view/template.php.

I tak jest na trzech serverach, 2 windowsy i 1 openBSD. W czwartym, dystrybucyjnym (debian) jest problem, gdyż framework wyrzuca mi błąd że strona main nieistnieje. Jakby klasa main, nie potrafiła dziedziczyć. Co więcej..

Jeżeli przekopiuje z application/libraries/MY_Controller.php metodę prepare_page() do mojej klasy /controllers/main.php to wszystko działa jak należy. Nie mam pojęcia co się dzieję. Zaznaczę, że serwer ma najnowszą wersję php

Kod
wasyl@foch:~$ php --version
   PHP 5.2.8-0.dotdeb.1 with Suhosin-Patch 0.9.6.3 (cli) (built: Dec 11 2008 22:57:19)


Czyli jeżeli klasa main wyglądać będzie jak poniżej, wszystko działa.
Kod
<?php defined('SYSPATH') or die('No direct script access.');
  
   class Main_Controller extends Controller {
  
       public function index() {
           $this->prepare_page();
       }
  
       /*
       * Prepare page content and show it on page
       */
      public function prepare_page()
      {
          $view = new View('template');
          $view->render(TRUE);
      }
   ?>

Nie chcę za każdym razem, przy tworzeniu nowej klasy umieszczać w niej prepare_page(), chce aby ta metoda byla w glownym kontrolerze i byla dziedziczona. HELP

Ten post edytował bfcior 8.01.2009, 23:32:27
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 16:52