[ Ivan Miladinović @ 12.01.2006. 18:07 ] @
Imam jedan problem, ne znam ni kako se to zove, ni sta radi, ali cu vam dati primer i ko razume svhatice i meni ce pomoci.

Samo da napomenem PHP 5 je u pitanju.

Hvala unapred.

Idemo ovako, dacu kod (deo) pa cu objasniti sta i kako ce se desava, a sta i kako meni treba.

Stvari koje naznacim da RADE i da NEMAM PROBLEMA SA NJIMA molim da ne uzimate u obzir i da ih ne komentarisete, znaci sve radi.

Naglasicu gde je problem.

Code:


class tatadetetest
    {

//primer funkcije
public function komsija(){

$this->code .='KOMSIJA'; 

}

// kada pozovem sledecu funkciju uredno se prikaze KOMSIJA

public function gencode()
        {
            print $this->code;
        }

//evo sada sledi problem... jer ne znam kako se poziva sledece:

public function tata()
{
     function dete($bilosta='')
     {
                 echo "$bilosta";

// ECHO isprinta sto mi je potrebno... ali kako da to uradim sa $this->code .=
// Pomagajte....
     }

}

}




Nadam se da sam dao sve potrebne informacije.

Dakle ne znam kako da isprintam ovo $bilosta uz pomoc $this->code .= a ne uz echo.

To mi je neophodno da bi uz pomoc funkcije gencode() generisao neki code... Znaci da se sve obuhvati u $this->....

Unapred zahvalan na pomoci.
Puno pozdrava od Ivana.
[ Vuk Nikolić @ 13.01.2006. 00:00 ] @
nisam bas shvatio sta zelis, ali ti unutar metode definises novu metodu...

public function tata()
{
function dete($bilosta='')
{
echo "$bilosta";

// ECHO isprinta sto mi je potrebno... ali kako da to uradim sa $this->code .=
// Pomagajte....
}

}

nije mi jasno sta tata treba da radi a sta dete.

jedna varijanta je:
function dete($bilosta='')
{
$this->code .= "$bilosta";


}

ili vec umesto dete da stoji tata...
i gde definises taj code?


[ Ivan Miladinović @ 13.01.2006. 00:24 ] @
Uf. Konacno da se neko javio... :)

Evo blize objasnjenje.

Ja kasnije funkciju tata pozovem i pohvatam sve sto pise

$this->code .=$varijabla

i upisem u fajl.

----------
a ne mogu da razdvojim tu funkciju (dete) jer se nalazi unutar parsera (ja sam ovde dao primer), znaci mora da stoji unutar funkcije tata.

ovo sto si ti napisao je OK, ali da funkcija NIJE unutar druge funkcije.

Code:
jedna varijanta je:
function dete($bilosta='')
{
$this->code .= "$bilosta";

}


ima tu neki fazon da se uradi sa $this-> ali da se stavi nesto ispred this... ali ne znam sta :(

----------

shvatas li me?

to sto si napisao RADI.

ali ne radi kada se funkcija nalazi UNUTAR druge funkcije...

Molim te trazi jos informacija ili bilo sta, ali ostani uz temu posto vidim da si zainteresovan...

Hvala.
Ivan.
[ pajac @ 13.01.2006. 08:27 ] @
Znači ti bi volio zvat funkciju koja je u prvoj funkciji? Sam ja to dobro razumeo?
[ valeksa @ 13.01.2006. 09:31 ] @
samo da napomenem da je ovo za PHP4, nemam trenutno 5 pri ruci...

Code:

// primer koriscenja
$tdt = new tatadetetest();
$tdt->komsija();
$tdt->gencode();
echo "<br>";

$tdt->tata().dete("xyz");

// OUTPUT izgleda ovako:
//
// KOMSIJA
// xyz



da li je to sto ti treba?

Pozdrav,
Vladan
[ Ivan Miladinović @ 13.01.2006. 14:20 ] @
Pozdrav svima!

Vladane mislim da je to to sto mi treba, ali ajmo na pravi primer zasta meni treba tako mislim da cu lakse razumeti da resim... Ovako nisam uspeo.

evo ga konkretan primer DELA koda i skripta koji se izvrsava (on ce biti drugi):

Code:
class GeneratorKoda
    {

private  $code='';    

//pa nevazne fukcije, pa stizemo do funkcije koja radi:

public function BAZA()
{
// konekcija sa bazom i sve sto ide...
// ovaj deo je bitan gde ja sa $this->code .= 

 for ($i=0; $i <$num_results2; $i++)
  {
$row = mysql_fetch_array($result3);
$this->code .= '<h2>';
$this->code .= stripslashes($row['naslov']); 
$this->code .= '</h2><h3>';  
$this->code .= stripslashes($row['tekst']);
$this->code .= '</h3><br>';
  }
}

//ovaj deo kasnije printa funkcija PRIKAZI

public function PRIKAZI()
        {
            print $this->code;
        }

//sada stizemo do problematicnog dela

public function Rezultati()
{

// izbacen deo koda

    function izlistaj()
    {
//izbacen code

            echo '<h1>'.$var1.'</h1><h1>'.$var2.'<br></h1><br>';

// ovo gore je vazno ^^^^^^^^        
    }

// izbacen donji deo coda

}
}



Kako da ovo sto je ovde printano sa echo
ubacim u $this->code ???

inace kod izvrsavam ovako:

Code:
 require_once('klasagenerator.php');
    $htmlgenerator = new GeneratorKoda();


    $htmlgenerator->BAZA();
    $htmlgenerator->Rezultati();
    $htmlgenerator->PRIKAZI();




Hvala na odgovoru.
Pozdrav svima!

[Ovu poruku je menjao evil_angel_yu dana 13.01.2006. u 15:22 GMT+1]
[ valeksa @ 16.01.2006. 11:37 ] @
Pozdrav,

uf..malo je zamrseno..ajde da vidimo sta mozemo da uradimo :):)

Pazi, posto se radi, koliko se secam, o 'generatoru koda' moras da odvojis deo koji generise kod od prikaza. Ne znam tacno sta rade i cemu su namenjeni, ali ovako kako mi se cini, ne ide. Uzmi papir i olovku pa to sistematizuj.

Zasto ovo kazem?

Zato sto na tvoje pitanje, kako da ono sto si prikazo sa echo(print) ubacis u variablu tj. atribut klase, ja cu da postavim pitanje zasto to uopste radis?

Trebao bi da ubacis to sto ti treba u neki atribut klase, pa ako ti treba da ga prikazes, onda ga prikazas a ako ti treba da spajas sa nekim dugim atributima onda to i radis...

To ti kazem, jer ce onda tvoj metod izlistaj() da radi bas to sto i radi, ali kao
Code:

echo $this->code1

a metod naprimer, formirajCode1() ce raditi
Code:

$this->code1 = <h1>'.$var1.'</h1><h1>'.$var2.'<br></h1><br>';


Znaci, sedi i objasni sebi sta treba klasa GeneratorKoda TACNO da radi, pa ce biti mnogo jasnije.

BTW, da pitanje ne ostane bez odgovora :):), moze se u variablu ubaciti ono sto si 'odstampao' preko output control funkcija
(pogledaj http://www.php.net/manual/en/ref.outcontrol.php) ali je to prekomplikovano a i mislim da nema potrebe u ovom slucaju posezati za tim resenjem.

BTW, zasto koristis nested funkcije? Koji je tacno razlog?

Pozdrav,
Vladan

[Ovu poruku je menjao valeksa dana 16.01.2006. u 12:45 GMT+1]