Проблема с include

fantom_uzb

Новичок
Проблема с include

есть два класса с одинаковыми именами, но с различной реализацией методов, подскажите пожалуйста, как сделать так, чтобы работало такое выражение, и подгружался класс содержащийся в последним include файле

PHP:
include_once('a1.php');
include_once('a2.php');


file a1
class A {
	function  printA1() {
		echo "a1";
	}
}

file a2
class A {
	function  printA2() {
		echo "a2";
	}
}
 

440hz

php.ru
fantom_uzb
может лучше чего в архитектуре проекта подправить что б такого в принципе не возникало?
 

Acabar

Новичок
Нельзя загружать два класса с одним и тем же именем.
И поставь правильно вопрос, мне не очень понятно что ты хочешь сделать.
 

fantom_uzb

Новичок
Автор оригинала: 440hz
fantom_uzb
может лучше чего в архитектуре проекта подправить что б такого в принципе не возникало?
на исправление архитектуры проекта нет времени, проблема возникла при использовании нескольких модулей на одной странице в cms phpComasy
 

Acabar

Новичок
Кхм, если я всё правильно понял, то тогда есть три варианта. Либо один класс переименовать, либо использовать оператор if и подружать нужный класс и последний вариант соединить их в один.
 

fantom_uzb

Новичок
Автор оригинала: Acabar
Кхм, если я всё правильно понял, то тогда есть три варианта. Либо один класс переименовать, либо использовать оператор if и подружать нужный класс и последний вариант соединить их в один.
К сожалению нет возможности использовать ни один из этих вариантов:
1 Переименовать классы нельзя, потому что в реализации подгрузки модулей записаны имена подгружаемых файлов
2 В использовании оператора IF нет никакого смысла, потому что на страницу должны быть подгружены оба модуля
3 Соединить их в один не получится, потому что это разные модули

-~{}~ 25.04.06 18:53:

Что-то я не очень понял, как здесь можно использовать данный паттерн
 

Necromant

Новичок
The main classes in the Factory Method pattern are the creator and the product. The creator needs to create instances of products, but the concrete type of product should not be hardcoded in the creator – subclasses of creator should be able to specify subclasses of product to use.
 

fantom_uzb

Новичок
Автор оригинала: Necromant
The main classes in the Factory Method pattern are the creator and the product. The creator needs to create instances of products, but the concrete type of product should not be hardcoded in the creator – subclasses of creator should be able to specify subclasses of product to use.
Проблема в том, что нельзя использовать конструкцию такого типа, потому что имена классов одинаковые

public class ImageReaderFactory {
public static ImageReader getImageReader( InputStream is ) {
int imageType = figureOutImageType( is );

switch( imageType ) {
case ImageReaderFactory.GIF:
return new GifReader( is );
case ImageReaderFactory.JPEG:
return new JpegReader( is );
// etc.
}
}
}
 

crocodile2u

http://vbolshov.org.ru
fantom_uzb
ты долго еще будешь страдать ерундой? два класса с одинаковыми именами сосуществовать не могут. это нонсенс. Ищи другой выход.
 

Necromant

Новичок
Классы и методы статичны ???
Если нет:
PHP:
class a1 {
    method1 {}
}
class a2 {
    method1 {}
}
//или
class A {
    function get($a) {
       if ($a==1) return new A1;
       else return new A2;
   }
}

//или 
class A {
    prvate $instance;
    fuunction A(a) {
          if ($a==1) $instance =  new A1;
          else $instance =  new A2;
    }
    function method1() {
          return $instance->method1();
    }
}
Все в 1 файле
 

fantom_uzb

Новичок
короче, тебе закрыта....
Всё равно никаких подходящих решение по-моему нет...
 
Сверху