| Autor | Zpráva | ||
|---|---|---|---|
| Jack Finger Profil |
#1 · Zasláno: 3. 10. 2008, 22:32:37 · Upravil/a: Jack Finger
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 |
#2 · Zasláno: 3. 10. 2008, 22:45:16
|
||
| Jack Finger Profil |
#3 · Zasláno: 3. 10. 2008, 23:16:59
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 |
#4 · Zasláno: 4. 10. 2008, 00:28:28
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 |
#5 · Zasláno: 4. 10. 2008, 00:29:43 · Upravil/a: srigi
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);
|
||
|
Časová prodleva: 18 let
|
|||
0