Portál AbcLinuxu, 9. května 2024 23:55


Dotaz: Problém s výpisem uvnitř class

11.4.2012 11:01 Soleto
Problém s výpisem uvnitř class
Přečteno: 234×
Odpovědět | Admin
Ahoj, mám problém v php s výpisem třídy, která je volaná z jiné třídy, uvedu příklad

Tohle nefunguje, nic to nevypíše

class temp{
    public function __construct(){
        $notice = new notice();
        echo $notice->show();
    }
}

new temp();
Pokud to dám mimo třídu, tak se vypíše všechno jak má
$notice = new notice();
echo $notice->show();
Neporadí někdo? Jinak třída $notice->show(); vypisuje uložené session. Případné podklady kódu doložím pokud bude pořeba.. Děkuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Tarmaq avatar 11.4.2012 11:28 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Odpovědět | | Sbalit | Link | Blokovat | Admin
Trida notice by se jiste hodila. Pokud tam mas nejaky tajnosti, tak to zmensi na nejaky nejmensi kod, na kterem se to da reprodukovat..
Don't panic!
11.4.2012 11:46 Soleto
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Trida notice by se jiste hodila. Pokud tam mas nejaky tajnosti, tak to zmensi na nejaky nejmensi kod, na kterem se to da reprodukovat..
Žádné tajnosti nemám ;) Tady to je..

class notice
{
    public function save($text){
        $_SESSION['notice_error'][] = $text;
    }

    public function show(){
        if(isset($_SESSION['notice_error'])){
            $temp='';
            for($i = 0; $i <= count($_SESSION['notice_error'])-1; $i++){
            $temp.='<li>'.$_SESSION['notice_error'][$i].'</li>';
            }
        }
    return $temp;
    }
}
11.4.2012 12:09 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Změňte si return $temp; na return "DEBUG $temp DEBUG"; a už to něco vypíše :)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
11.4.2012 12:15 Soleto
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Vypíše to jen DEBUG DEBUG
Tarmaq avatar 11.4.2012 12:19 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
no a nebude to tim, ze se vubec nevola $notice->save('text')?
Predpokladam ze session_start() zminovat nemusim..
Don't panic!
11.4.2012 12:20 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Takže temp je prázdna? Cyklus for neprebehne ani raz?
11.4.2012 12:23 Soleto
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Vypadá to, že je prázdná, ale pokud zavolam
$notice = new notice();
echo $notice->show();
mimo tu třídu temp tak vsechno funguje jak ma.. nechápu
11.4.2012 12:28 Kit
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Když udělám
$_SESSION['notice_error'][]="aa";
$_SESSION['notice_error'][]="bb";
new temp();
tak mi to normálně funguje, vypíše
<li>aa</li><li>bb</li>
11.4.2012 12:50 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
No vidíš, takže z výpisem problém není :)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
11.4.2012 12:21 Lukáš Rychtecký
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
V metodě show vracíš neinicializovanou proměnnou. Pokud tedy podmínka if(isset($_SESSION['notice_error'])) neproběhne, vytvoří se PHP Notice Undefined variable: temp

Doporučuji nastavit error_reporting = -1

Pomohlo?
11.4.2012 12:26 Soleto
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Žádná chyba se nevypíše, tu session prostš v systému vidím.. pokud dam print_r($_SESSION['notice_error']); tak vidím hodnotu te session
11.4.2012 13:28 Soleto
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Odpovědět | | Sbalit | Link | Blokovat | Admin
Už čuchám kde je problém :-(

pokud zavolám
New Test($foo);
a mám třídu ve které jsou 3 metody, jak můžu zpřístupnit všem metodám tu proměnnou $foo? Musím použít __construct a $this?
class Test {
publicity function MetA(){}
publicity function MetB(){}
publicity function MetC(){}
}
Tarmaq avatar 11.4.2012 13:51 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
spravne:
class Test
{
  public function __construct($foo)
  {
    $this->foo = $foo;
  }
  private $foo;
  public function MetA()
  {
    return $this->foo + 1;
  }
  public function MetB()
  {
    return $this->foo -2;
  }
  public function MetC()
  {
    return $this->metA() * $this->metB();
  }
}
jinak ta funkce neni publicity ale public ;]
Don't panic!
11.4.2012 13:55 Soleto
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
Díky moc, a proč jste použil
private $foo;
a nepoužil
var $foo;
Díky
Tarmaq avatar 11.4.2012 14:23 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Problém s výpisem uvnitř class
protoze to mi zajisti, ze ta property nebude zvenku pristupna, mohou ji pouzivat jen metody uvnitr te tridy. Vice zde: Property Visibility
Don't panic!

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.