Autor Zpráva
Jack Finger
Profil
ahoj, tak mám takový menší problém:
mám dvě třídy: ClassM a ClassC, uložené v příslušných souborech. jenže:
index.php:

include('ClassC.php')
include('ClassM.php')

$c = New ClassC;
$m = NewClassM;

to je normální, funguje. ale:
ClassC.php:

class C {
  function func(){
    global $m;
    $m->do('...');
    return '...something...';
  }
}

ClassM.php:

class M {
  function func(){
    global $c;
    $c->func();
  }
}



a to samozřejmě nefunguje. nevím, jestli to někdo pochopí, snad ano, kdyžtak to ukážu přímo na příkladu, v jakém to mám, já se to jen pokoušel zobecnit... nevěděl by někdo, jak tohle řešit?
Aesir
Profil
Jack Finger:

Singleton?
Jack Finger
Profil
no tak jsem to nakonec vyřešil tak, že jsem v třídě C zavolal novou instanci M. sice by to asi šlo líp, ale funguje to a singleton ještě nechápu, tak se časem pokusím pochopit. díky za tip Aesire :o)
Kcko
Profil
Coz takhle?

class RegisterObject
{
	private static $objects = array();
	
	public static function register($object, $alias)
	{
		self::$objects[$alias] = $object;
	}
	
	
	
	public static function printObjects()
	{
		print_r(self::$objects);
	}


	public static function getObject($objectIndex)
	{
		return self::$objects[$objectIndex];
	}
}



class A
{
	function cau()
	{
		echo "cau";
	}
}



class B
{
	public $x = "toto je x";
	
	function cau()
	{
		echo $this->x;
	}
}


 
 

RegisterObject::register(new A, 'A');
RegisterObject::register(new B, 'B');
//RegisterObject::printObjects();
RegisterObject::getObject('A')->cau();
srigi
Profil
Jack Finger
Predaj si tie objekty "jeden druhemu". Lebo ked vidim to slovo global... ehm, to je velmi nesystemove a neobjektove. Takze:
class ClassC {
  private $_m = null;

  public function setM($m)
  {
    $this->_m = $m;
  }

  function func(){

    $this->m->do('...');
    return '...something...';
  }
}

class ClassM {
  private $_c = null;

  public function setC($c)
  {
    $this->_c = $c;
  }

  function func(){

    $this->c->do('...');
    return '...something...';
  }
}

$c = New ClassC;
$m = New ClassM;

$c->setM($m);
$m->setC($c);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0