Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Получить доступ к методам др.классов внутри класса


Автор: userseo 9.1.2012, 11:15
Код

<?
function scandirs($start) {
     $files = array();
     $handle = opendir($start);
     while (false !== ($file = readdir($handle)))
     {
         if ($file != '.' && $file != '..')
         {
             if (is_dir($start.'/'.$file))
             {
                 $dir = scandirs($start.'/'.$file);
                 $files[$file] = $dir;
             }
             else
             {
                 array_push($files, $file);
             }
         }
     }
     closedir($handle);
     return $files;
 }
$dir = 'classes';
$classes = scandirs($dir);

foreach($classes as $className)
{
  $className = substr($className,0,-4);
  if(file_exists($dir . '/' . $className.'.php'))
                {
                require_once($dir . '/' . $className.'.php');
                $$className = new $className;
                }
}
?>


Первый файл не может использовать переменные второго и обратно..
Как сделать, чтобы можно было?

Автор: ksnk 9.1.2012, 11:18
Цитата(userseo @  9.1.2012,  11:15 Найти цитируемый пост)
Первый файл не может использовать переменные второго и обратно..

Где в приведенном отрывке скрипта первый файл, а где второй?

Автор: Sanchezzz 9.1.2012, 12:08
userseo если вы делаете систему авто подключения классов  воспользуйтесь уже готовым способом а не велосипедом. 

http://php.net/manual/ru/language.oop5.autoload.php

Автор: $дмитрий 9.1.2012, 13:42
Цитата

Первый файл не может использовать переменные второго и обратно..
Как сделать, чтобы можно было?

Объявить переменные глобальными

Автор: userseo 9.1.2012, 15:54
Я ничего не понимаю...
Есть 5 классов (1 класс = 1 файл), нужно чтобы каждый класс мог испольтзовать методы и переменные других 4 классов. И так с каждым.

Код

$dir = 'app/classes';
$classes = scandirs($dir);

foreach($classes as $className)
{
  $className = substr($className,0,-4);  
  if(file_exists($dir . '/' . $className.'.php'))
                {
                require_once($dir . '/' . $className.'.php');
                $$className = new $className;
                }
}

Что нужно сюда добавить?

Автор: Xplod 9.1.2012, 16:15
Цитата(userseo @  9.1.2012,  15:54 Найти цитируемый пост)
Что нужно сюда добавить? 
 

Вообще то само по себе странно и некорректно так задавать вопросы... 
Если хотите чтобы вам помогли раскройте суть, проблемы предоставьте хотя бы примерные исходники, 
да и к тому же класс классу рознь, а на данный момент у вас я не вижу ни одного класса... 
если вы считаете что нам этого достаточно, тогда я отвечу в такой же манере: используйте паттерн Singleton  

Автор: ksnk 9.1.2012, 16:16
Цитата(userseo @  9.1.2012,  15:54 Найти цитируемый пост)
Что нужно сюда добавить? 

Цитата($дмитрий @  9.1.2012,  13:42 Найти цитируемый пост)
Объявить переменные глобальными 

например так:
Код

...
$GLOBALS[$className] = new $className;
...


Хотя правильно было бы почитать про паттерны программирования и выбрать подходящий

Автор: Xplod 9.1.2012, 16:23
Если класс должен наследовать все свойства и методы других классов, то тогда надо просто класс наследник объявить extends, ну и потом в наследнике обращаться к методам и свойствам родителя обычным путем, если конечно область видимости позволяют это сделать.  Это довольно необходимый аспект ООП который просто необходимо знать.

Автор: Sentox 9.1.2012, 20:47
Цитата

Xplod
Если класс должен наследовать все свойства и методы других классов, то тогда надо просто класс наследник объявить extends, ну и потом в наследнике обращаться к методам и свойствам родителя обычным путем, если конечно область видимости позволяют это сделать.  Это довольно необходимый аспект ООП который просто необходимо знать.

Я так понял у топикстартера другая архитектура и асоциация связей классов.

Добавлено @ 20:53
Цитата(userseo @ 9.1.2012,  15:54)
Я ничего не понимаю...
Есть 5 классов (1 класс = 1 файл), нужно чтобы каждый класс мог испольтзовать методы и переменные других 4 классов. И так с каждым.

Код

$dir = 'app/classes';
$classes = scandirs($dir);

foreach($classes as $className)
{
  $className = substr($className,0,-4);  
  if(file_exists($dir . '/' . $className.'.php'))
                {
                require_once($dir . '/' . $className.'.php');
                $$className = new $className;
                }
}

Что нужно сюда добавить?

У меня то же вопрос. Есть у меня машина и не поварачивает когда я вращаю руль.
Вот скажите мне я беру ложу руки на руль начинаю вращать а она всё равно не поворачивается, вопрос что с колёсами вот проверь мои руки и мой руль?

Автор: userseo 10.1.2012, 05:45
Цитата(ksnk @ 9.1.2012,  16:16)
Цитата(userseo @  9.1.2012,  15:54 Найти цитируемый пост)
Что нужно сюда добавить? 

Цитата($дмитрий @  9.1.2012,  13:42 Найти цитируемый пост)
Объявить переменные глобальными 

например так:
Код

...
$GLOBALS[$className] = new $className;
...


Хотя правильно было бы почитать про паттерны программирования и выбрать подходящий

какой паттерн нужен для этого?
Зачем все усложнять..? 
Просто подскажите, что нужно сюда добавить и все. И логически не понимаю, как это реализовать.

Мне нужна такая архитектура.Уж подсказали бы...Я писал крупные сайты.Но сейычас нужно такую архитектуру.

Автор: Xplod 10.1.2012, 07:40
Цитата(userseo @  10.1.2012,  05:45 Найти цитируемый пост)
Я писал крупные сайты

что то непохоже... 

Автор: userseo 10.1.2012, 08:37
Модератор: Сообщение скрыто.

Автор: Xplod 10.1.2012, 08:41
Модератор: Сообщение скрыто.

Автор: MoLeX 10.1.2012, 09:29

M
MoLeX
Модератор: тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)