Pereiti prie turinio

Padėkit PHP OOP type hinting, ORM


Rekomenduojami pranešimai

Sveiki ppl negaliu isspresti užduoties Type Hinting

 

Paprastas kodas:

 

<?php
class GuestBookRecord
{
protected $message;
   public function __construct($message)
   {
       $this->message = $message;
       //var_dump($this->message);
   }
}


class GuestBook
{
   protected $file;

public function __construct($file)
{
   $this->file = $file;
}

public function getAll()
{
   $data =  file($this->file);
   $ret = [];
   foreach ($data as $line) {
       $ret[] = new GuestBookRecord($line);
   }
   return $ret;
}
}


$gb = new GuestBook(__DIR__ . '/db.txt', FILE_IGNORE_NEW_LINES);
var_dump($gb->getAll()); 
?>

 

Rezultatas gaunasi toks:

 

array(4) { [0]=> object(GuestBookRecord)#5 (1) { ["message":protected]=> string(29) "Tiger! Tiger! burning bright " } [1]=> object(GuestBookRecord)#4 (1) { ["message":protected]=> string(29) "In the forests of the night, " } [2]=> object(GuestBookRecord)#3 (1) { ["message":protected]=> string(26) "What immortal hand or eye " } [3]=> object(GuestBookRecord)#2 (1) { ["message":protected]=> string(33) "Could frame thy fearful symmetry?" } }

 

ir dabar reikia padaryti dar viena funkcija kuri prasideda taip (type hinting),:

 

function addmessage(GuestBookRecord $rec) {

...

}

 

Čia ir nieko man nesigauna. na jaigu butu paprasta funkcija tai aisku ka reiketu daryti pvz:

kažkas tokio apytiksliai pagrindines: kaip pradeti kad nors koki echo gauti ar panasiai

implode("\n", $res);
file_put_contents(__DIR__ . '/db.txt', 'tratatat');

Redagavo net999
Nuoroda į pranešimą
Dalintis kituose puslapiuose

pas mane gaunasi taip kad:

 

$gbmsg = new GuestBookRecord('Hi ppl!!!');

$gb->addmessage($gbmsg);

 

public function addMessage(GuestBookRecord $msg)

 

{

 

$this->msg = $msg;

$data = file($this->file);

$data[] = $this->msg;

}

 

//grazina toki masiva

 

 

array(5) {

[0]=>

string(33) "Tyger! Tyger! burning bright

"

[1]=>

string(30) "In the forests of the night,

"

[2]=>

string(27) "What immortal hand or eye

"

[3]=>

string(33) "Could frame thy fearful symmetry?"

[4]=>

object(GuestBookRecord)#6 (1) {

["message":protected]=>

string(9) "Hi ppl!!!"

 

toks ir klausimas kaip man is sito [4] gauti normalu masiva ne objekta

 

Gal bus naudingos informacijos:

http://stackoverflow.com/questions/4345554/convert-php-object-to-associative-array

Nuoroda į pranešimą
Dalintis kituose puslapiuose

nu aš jau parašiau viskas veikia, tik gal buvo galima kažkaip kitaip parašyti, idomu ar type hinting pas mane teisingai parasytas.

 


<?php


class GuestBook
{
   protected $file;

   public function __construct($file)
   {
       $this->file = $file;
   }

   public function getAll()
   {
       $data =  file($this->file);
       $db = [];
       foreach ($data as $line)
       {
           $db[] = new GuestBookRecord($line);
       }
       return $db;
   }

   public function addMessage(GuestBookRecord $msg)
   {
    //$this->msg = $msg;

       $arr =  file($this->file, FILE_IGNORE_NEW_LINES);
       $arr[] = $msg->getMessage();
       $arr = implode("\n", $arr);
       file_put_contents($this->file, $arr);
       //header('location:  /guestbook3/index.php');
       //echo 'message add!!!';
   }
}

class GuestBookRecord
{
   protected $message;
   public function __construct($message)
   {
       $this->message = $message;
   }

   public function getMessage()
   {
       return $this->message;
   }
}

$gb = new GuestBook(__DIR__ . '/db.txt', FILE_IGNORE_NEW_LINES);
$data = $gb->getAll();

$gbmsg = new GuestBookRecord('Yahoo!!!');
$gb->addmessage($gbmsg);

foreach ($data as $line):
echo $line->getMessage();
endforeach;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

nenoriu kurti naujos temos dabar turiu nauju problemu su objektas View turi turetu tokius metodus:

 

assign($name, $value) - kurio misija - išsaugoti perduodamus duomenis i šabloną (naudoti protected objekta - masyve saugoti šiuos duomenis)

display($template) - kuris rodo pasirinkta šabloną su is anksto issaugotais duomenimis

render($template) - kuri yra analogiška display (), bet nerodo sablono narsykleje, o grąžina

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...