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.

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