ООП или мои руки растут ниже плеч?!

Печать RSS
116

Д
Автор
Пацак
0
Все привет, в общем у меня такая проблема я пишу скрипт в нем подключаеться главный файл

<?php
// File index.php
require_once('include/config.php');
//Здесь мы проверяем какую страницу подключать
$obj->getDisplay((isset($mod) && !empty($mod))? $mod : 'main');
?>

Метод getDisplay определяет какую страницу подключать по переданным данным в переменной mod

вот и сам этот метод

<?php
public function getDisplay($mod)
	{
        require_once ($this->pathRoot('STYLE') . 'head.php');
        $ini = parse_ini_file($this->pathRoot('STYLE') . 'mod.ini',true);
        $mode = array_keys($ini);
        if(in_array($mod,$mode))
        {
            $values = array_values($ini[$mod]);
            $incfile = $values[0];
            if(file_exists($this->pathRoot('STYLE') . $incfile))
            {
                require_once ($this->pathRoot('STYLE') . $incfile);
            }else{
                require_once ($this->pathRoot('STYLE') . 'error.php');
            }
        }
        require_once ($this->pathRoot('STYLE') . 'foot.php');
	}
 ?>

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

<?php
echo $obj->getVersion();
?>

говорит что такой клас не объявлялся а что бы работало приходиться в этих файлах заново его объявлять, но ведь так не должно же быть? Верно?

Подскажите кто ни будь уже сталкивался с таким?

2000 лет д.н.э.
0
echo $this->getVersion(); читаем вступление в ооп
Д
Автор
Пацак
0
Это если в самом класе, а на странице выводиться
<?php
$obj = new Test();

echo $obj->getVersion();

?>
Изменил: Даниил (24.01.2011 / 16:41)

2000 лет д.н.э.
0
require_once ($this->pathRoot('STYLE') . $incfile);
вот у тебя этот файл внутри класса

Добавлено через 01:04 сек.
или ты хреново обьяснил суть, где что и как
Д
Автор
Пацак
0
Щас опишу все подробнее....
Д
Автор
Пацак
0
Все привет, в общем у меня такая проблема я пишу скрипт в нем подключаеться главный файл

<?php
// File index.php
require_once('include/config.php');
//Здесь мы проверяем какую страницу подключать
//При переходи на индекс в метод передаеться main так как переменная $_GET['mod'] не объявлена и подключаеться файл body.php
$obj->getDisplay((isset($mod) && !empty($mod))? $mod : 'main');
?>

<?php
//File config.php

function __autoload($name)
{
    if(file_exists('class/'.$name.'.class.php'))
    {
        require_once ('class/'.$name.'.class.php');
    }
}

$obj = new Test();
?>
Метод getDisplay определяет какую страницу подключать по переданным данным в переменной mod

вот и сам этот метод
Это файл с класом
<?php
// File Test.class.php
class Test{
function __construct()
{
    //.......
}
    public function getDisplay($mod)
	{
        require_once ('style/head.php');
        $ini = parse_ini_file('style/mod.ini',true);
        /**
         * File mod.ini
         [main]
         filebody = "body.php"
         * */
        $mode = array_keys($ini);
        if(in_array($mod,$mode))
        {
            $values = array_values($ini[$mod]);
            $incfile = $values[0];
            if(file_exists('style/' . $incfile))
            {
                require_once ('style/' . $incfile);
            }else{
                require_once ('style/error.php');
            }
        }
        require_once ('style/foot.php');
	}
    
    public function getVersion()
    {
        return '0.0.1';
    }
 }
 ?>

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

<?php
//File body.php
echo 'Version'.$obj->getVersion();
?>

говорит что такой клас не объявлялся а что бы работало приходиться в этих файлах заново его объявлять, но ведь так не должно же быть? Верно?

Подскажите кто ни будь уже сталкивался с таким?
Д
Автор
Пацак
0
Спасибо за то что помогали, но мне уже подсказали оказуеться раз файл подключаеться в контексте класа то в нутри этих файлов надо обращаться к класу через $this
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск