2013-05-09 3 views
-1

Я пытаюсь сделать дочерний класс (каналы) наследованием переменной из основного класса (контроллера).Наследование переменных от основного класса до расширенного класса PHP

У меня есть 3 файла. Они выглядят следующим образом.

файл ядра:

/* ----------------------------- * 
* LOAD THE CONTROLLER CLASS NOW * 
* ----------------------------- */ 
require(CORE_PATH . 'controller.php'); 

require(CORE_PATH . 'load_controller.php'); 

КОНТРОЛЛЕР КЛАСС:

<?php 

class Controller { 

    var $sessions, $a; 

    public function __construct() { 
     $this->sessions = new Sessions(); 
     $this->a = 'yo'; 
    } 
} 

ПОДАЧИ КЛАСС:

class Feeds extends Controller { 
    public function feeds() { 
     /* We can load other resources here */ 

    } 

    function index($val) { 
     echo $this->a; 
    } 
} 

Исправление:

<?php require(PROTECT); 

class Controller { 

    protected $variable = "Setting the variable right here works."; 

    public function __construct() { 
     $this->variable = "Setting it right here will only work for the current object. It's as if variable isn't being set at all when it comes to other classes."; 
    } 
} 
+0

Просто потому, что классы связаны не означает ** отдельные экземпляры объекта ** будут делиться ** теми же данными **. Это не так, как это работает. – deceze

+0

Возможный дубликат [как получить доступ к родительской переменной из дочернего класса] (http://stackoverflow.com/questions/14178329/how-to-access-parent-variable-from-child-class) – deceze

+0

@deceze - Это не то, что Я пытаюсь это сделать. В этом случае экземпляры несущественны. Я просто пытаюсь унаследовать $ a и $ сеансы из класса Controller, к классу Feeds, который расширяет контроллер. Когда я пытаюсь получить доступ к переменной $ a, используя ключевое слово $ this, это не сработает. – Devontrae

ответ

0

, если вы не используете PHP4, вам действительно следует избегать объявления классов с использованием var. используйте public, private, protected

в вашем случае, так как вы использовали var, ваша переменная-член $a должна быть доступна из класса child.

У вас возникли ошибки?

+0

Я получаю ошибки. Я пробовал var, public, private, protected и их комбинации. Все еще не работает. Однако, спасибо. Я не могу видеть журналы ошибок прямо сейчас, поэтому stackoverflow - мой единственный вариант. лол. – Devontrae

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