Наследствие классов в PHP 4

XOR_URAL2

Новичок
Наследствие классов в PHP 4

Здравствуйте, решил я написать свой маленький фреймворк и вот встал на самом начале
Вообщем идея такая была. Я пишу 1 класс который называется Framework и в зависимсоти от параметров переданных констркутору этого класса он создается для работы с БД, сессиями ну или еще чем то.... (те реализовать посути расширение класса)
вот что я написал:
PHP:
<?php
class Framework
{
	//Стандартные ответы 
	var $std_ok;
	var $std_error;
	//
	
	//Конструктор Класса
	function Framework()
	{
		$this->std_ok=11111;
		$this->std_error=0;
		//$gb = new GB; 
        //return $child; 
    }
	function test1()
	{
		echo "grgregeregerge";
		//Test();
	}
}

class GB extends Framework 
{
	//Класс для работы с глобальными перемнными
	function GB()
	{
		parent::Framework();
	}
	
	function Test()
	{
		echo "Тест";
	}
}
$n=new GB();
$n->test1();
?>
но получается что для класса GB мой Framework является расширением а я хотел бы сделать наоборот чтобы к моему фреймоворку инклудились мелкие классы...
Дак вот вопрос это реально и если да то какова схема.
Заранее спасибо.
 
начни с объектов и интерфейсов их поведения

что куда инклудится, кто кого наследуют -- второстепенные детали проектирования
 

XOR_URAL2

Новичок
Дак в том то и дело что отдельные объекты и классыболее ли меннее готовы,хотелось бы все это в 1 класс и вызывать след образом:

$n=new framework("mysql","global");

все значит создался бы мой основной класс с поддержкой mysql и массива GLOBALS
 

die_hard

Новичок
Вам кажется нужно Паттерн Factory (или типа того) использовать
 

XOR_URAL2

Новичок
А что это такое если не составит труда скиньте ссылку на
описание Паттерн Factory
 

XOR_URAL2

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

die_hard

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

Если хочешь чтобы у тебя один класс все делал. - то надо пользоваться паттерном Фабрика
Если не хочешь пользоваться этим паттерном Фабрика - продумый что-то свое, но это точно будет хуже решение чем с паттерном.

Есть еще вариант не юзать одни хитрый класс. а сделать тупо наследования от твоего класса FrameWork, в данном случае класс FrameWork будет просто аггрегировать методы которые умеют просто работать с указанным типом переменных. будь-то Сессия или еще что-то. как в принципе ты и начал делать.
 

XOR_URAL2

Новичок
2 die_hard thx!
Мне бы вот почитать что есть патерн Фабрика, много про него чего слышал но что это такое понятия не имею
 

Гравицапа

elbirret elcno
XOR_URAL2
Вот тебе пример из Horde. Здесь всё достаточно просто...в зависимости от текущего драйвера (например, драйвер для работы с MySQL) возвращается объект определённого класса (в данном случае потомка).
Класс Driver - абстрактный.

../lib/Driver.php
PHP:
 function &factory($driver = null, $params = null)
 {
        if (is_null($driver)) {
            $driver = $GLOBALS['conf']['storage']['driver'];
        }

        $driver = basename($driver);

        if (is_null($params)) {
            $params = Horde::getDriverConfig('storage', $driver);
        }

        require_once dirname(__FILE__) . '/Driver/' . $driver . '.php';
        
        $class = 'Imp_Driver_' . $driver;
        
        if (class_exists($class)) {
            $imp = &new $class($params);
            
        } else {
            $imp = false;
        }

        return $imp;
    }
 
Сверху