предположим есть некий класс А PHP: <?php class A{ public $var_1, $var_2,$var_3,$var_4; public function __construct(){ $this->var_1 = $var_1; $this->var_2 = $var_3; $this->var_3 = $var_3; $this->var_4 = $var_4; } public function MainFunc(){ $this->var_1 = new Class2();//другой класс $this->var_2 = new Class3();//другой класс } } ?> листинг Class2() PHP: <?php class Class3{ public $var_5, $var_6,$var_7,$var_8; public function __constructor(){ $this->var_5 = $var_5; $this->var_6 = $var_6; $this->var_7 = $var_7; $this->var_8 = $var_8; } public function Class3_MainFunc(){ $this->var_5 = $this->$var_1->Func_new(); //здесь у меня выдаёт ошибку,хотя данная функция существует в классе Class2 } ?> Помогите разобраться!!!! как получить доступ в классе Class3 к переменной из Class2
Не прокатывает!!!!! она у меня была сначала как private потом я её Public сделал но осталось всё тоже самое! может дело в чём то другом????
Извиняюсь я описался у меня $this->vart_5 = $this->var_1->Func_new(); Без $; мне выдаёт ошибку что не доступа к функции Func_new()!
$this->var_1 = new Class2(); - данный клас у меня представляет собой класс для работы с БД Func_new() - это я так написал на самом деле там вызывается ряд функция на перезапиьс запроса к БД и выполнение самого запроса, но эпри этом выдаётся ошибка! класс А - предназначен для вывода страницы! это вкратце что я хочу сделать!
ты разберись для начала. пишешь листинг Class2() а в след идущем коде Код (Text): class Class3{ как изволите понимать сие?
На такой чудовищный уровень абстракции описания не способен даже мой затраханый мозг. Проще, проще надо описывать. И практичней. Чтобы было ясно. А-то слов много, одно на другом.
Каждый клас выполняет свои функции, они подключаются динамически! Class2() - - это клас для работы с БД Class3() -- для обработки и анализа переданного пути (url) и т.д. толко вот в Class3() - я не могу сделать запрос к БД для выборки из БД на основании url необходимые данные для построения содержимого! php мне ошибку выдаёт! так же я не могу работать с класом написанного для работы с пользователем! а classA() - это основной класс в файле index.php!
этот код у меня стоит в файле index.php PHP: require_once './lib/class.inc'; $pages = new load(); $pages->load_BootStart($setting); в упрощённом виде код файла class.inc PHP: <?php // $Id: load.php,v 1.02 2010/10/09 12:05:00 $ require_once './settings/settings.php'; // настройки для подключения к БД require_once './lib/mysql.inc';//клас блин работы с БД require_once './lib/exceptions.inc';//класс исключений //необходимые константы не буду объяснять зачем они define("NAME_ACTION", "ect"); define("ACTION_DEFAULT", "list"); define("ACTION_PROTSES", "sawe"); define("TIME_COOCIES", "3600"); define("TIME_FORMAT_INT", "int"); define("TIME_FORMAT_DATATIME", "time"); class load{ public $db; private $file; private $module; private $path; private $user; private $block; private $content; public function __constuct(){ $this->db = $db; $this->file = $file; $this->module = $module; $this->path = $path; $this->user = $user; $this->block = $block; $this->content = $content; } public function __set($name,$value){ $this->name = $value; } public function load_BootStart($setting){ $this->db = new dbBases($setting); $this->module = $this->loading_BootModule(); foreach($this->module as $key => $value){ $this->file[] = './modules/'.$value['MO_NAME']; } $this->load_BootFile();// загрузка необходимых файлов $this->path = new Mpath();//пути $this->path->Mpath_Sinonims();//запрос к пути у меня здесь выводит ошибку $this->user = new Muser(); $this->user->Muser_DetectUser();//запрос к пути у меня здесь выводит ошибку } public function load_GetVariabl($var){ $this->db->str = "SELECT * FROM {variabl} WHERE {variabl}.`VA_NAME` = '%s';$var"; $result = $this->db->dbBases_FetchArray($this->db->dbBases_Query($this->db->dbBases_RewriteQuery())); return $result[0]['VA_VALUE']; } public function load_GetSession(){ return session_id(); } public function load_GetIPadress(){ return $_SERVER['REMOTE_ADDR']; } public function load_GetTime($format){ switch ($format){ case TIME_FORMAT_DATATIME: $result = date("Y-m-d H:i:s"); break; case TIME_FORMAT_INT: $result = time(); break; } return $result; } public function load_BootFile(){ foreach($this->file as $key => $value){ try{ if (file_exists("$value")){ include_once("$value"); } else { throw new FileException('file_none'); } } catch(Exception $e){ return $this->error = $e->getMsg(); } } } public function load_BootModule(){// хотя в этой функции всё работает тоесть обращение к бд $this->db->str = "SELECT * FROM {module} ORDER BY {module}.`MO_COUNT` ASC"; return $this->db->dbBases_FetchArray($this->db->dbBases_Query($this->db->dbBases_RewriteQuery())); } } ?> приведу листинг функции $this->path->Mpath_Sinonims(); которая находиться в динамически подключаемом файле в каталоге /mod/ PHP: public function Mpath_Sinonims(){ $count_path = count($this->path['get'])-1; $seach_path = $this->path['get'][$count_path]; $this->db->str = "SELECT * FROM {synonyms},{menu} WHERE {synonyms}.`SI_SINONIM` = '%s' AND {menu}.`ME_COUNT` = {synonyms}.`SI_ME_COUNT`;$seach_path"; if($this->db->dbBases_FetchArray($this->db->dbBases_Query($this->db->dbBases_RewriteQuery())) != NULL){ return $this->db->dbBases_FetchArray($this->db->dbBases_Query($this->db->dbBases_RewriteQuery())); } else return false; } в данной функции Я не могу обратится к подключению к базе данных[/php]
во-первых не load(), а loading() во-вторых, фигли в функцию ты не чего не передаешь, но там к чему-то обращаешься. область видимости учитываешь?
да я просто изменял названия функций! ты думаеш что PHP: $this->path->Mpath_Sinonims();//запрос к пути у меня здесь выводит ошибку надо передавать PHP: $this->db ???????????????
$this->db внутри объекта Mpath относительно класса load, означает $this->path->db обычно чтобы обеспечить доступ к одному классу, без того, чтобы плодить многочисленные его экземпляры используетсяпаттерн Singleton либо: 2.Передавать db напрямую, через конструктор $this->path = new Mpath($this->db); class Mpath { __costruct($db){ $this->db = $db; } } 3.Передавать db через глобальную переменную 4.Создавать экземпляр db в конструкторе Mpath