Подключение файла через метод

Footniko

Новичок
Приветствую.
Не удается подключить файл через метод класса. Сам файл подключается, но его переменные не доступны.
PHP:
public function getComponent($component)
{
	$this->_component = $this->sitePath() . 'components/' . ucfirst($component) . '/index.php';
	require_once($this->_component);
}


public function show() 
{
	//require_once($this->sitePath() . 'components/Rating/index.php'); // так будет работать
	//$Rating = new Component_Rating;
	$this->getComponent('Rating');
        $Rating->test(); // так не работает
}
Rating.php
PHP:
class Component_Rating
{
    public function test()
    {
        echo "It's a test!";
    }
}
 

Gas

может по одной?
подключить то ты подключил, а объект не создал
 

Gremboloid

инженера Гр...
Все правильно, при подключении файла через метод, переменные объявленные в подключаемом файле не видны в других методах, потому что являются локальными для данного метода.
 

Footniko

Новичок
подключить то ты подключил, а объект не создал
На самом деле создал, просто в этот код забыл вписать. Там в файле Rating.php чуть выше еще есть
PHP:
$Rating = new Component_Rating;
Все правильно, при подключении файла через метод, переменные не видны потому что являются локальными для данного метода.
Спасибо. Теперь понятно. А как же тогда организовать правильное подключение? Инклюдить все время как то не красиво:(
 

Gremboloid

инженера Гр...
1. Тупо сделать глобальными переменными или использовать Registry ( гусары молчать :) )
2. Добавить в класс свойство, которое будет принимать значение в ::getComponent и использоваться в ::show
3. Пересмотреть алгоритм.
 

sakon

П..и.н..ок
1. Тупо сделать глобальными переменными или использовать Registry ( гусары молчать :) )
2. Добавить в класс свойство, которое будет принимать значение в ::getComponent и использоваться в ::show
3. Пересмотреть алгоритм.
Молчать не буду! От первого предложения у меня икота до сих пор не проходит.
 

ksnk

прохожий
Явно инклюдить файлы с компонентами - грех. Давно уже можно пользоваться autoload и spl_autoload. Получается кошернее - один класс-один файл, да и значительно удобнее получается, если с места на место придется таскать классы / обертки.
 

Footniko

Новичок
Решил подключать через include пока. Классов немного. Как появится больше буду менять структуру и на spl_autoload переносить.
 

fixxxer

К.О.
Партнер клуба
Не лень? Код автолоада готовый из PSR-0 берешь и все, делов то на 5 минут.
 

Footniko

Новичок
Не лень? Код автолоада готовый из PSR-0 берешь и все, делов то на 5 минут.
У меня просто структура не подходящая, точнее кривоватая. Когда буду менять, перенесу на spl_autoload.
 
Сверху