Proc --> OOP, primjeri

Zanima me imam li greške u kodu…(mislim sve radi kak spada)

proceduralna verzija

OOP verzija

Ako je tako - onda nemaš. :slight_smile:
To je u principu to. Vrlo jednostavan primjer i dobro si uradio.

npr
http://9tutorials.com/2007/06/27/basic-working-with-files-in-php.html
klasičan primjer osnova rukovanja sa “file”-ovima:

fwrite:

fread:

i unlink:

sam napravio klasu :smiley:

ikakve primjedbe

Kako otvoriti “text2.txt” datoteku i na kraju te datoteke dodati nešto drugo osim “Something written in PHP”?

Pa samo je jedna text datoteka “text.txt” u ovom slučaju , a unutar varijeble $insert se može drugi tekst stavit , ili ja nisam skužio pitanje

Stvar je u tome šta tvoja klasa može spremiti uvijek jedan isti file, te ne možeš naknadno upisivati tekst.
A takvu klasu ne možeš ponovno koristiti za istu funkcionalnost.

Tvoja klasa se nebi trebala zvati FileHandling nego textTxtFileHandling jer radi samo sa jednim fileom.

a tema se zove proc–>OOP, konkretnije gornji primjer sam pretvorio u OOP :smiley:

Za domaći rad napravi konstruktor klase koji prima 2 parametra - ime datoteke i tekst koji se ubacuje u datoteku. Tako će svaka instanca objekta raspolagati s vlastitim parametrima. To bi onda imalo više smisla.

Hvala Igor! Kada nađem vremena ću napraviti tako zadatak, iako to ulazi u sferu offtopica :wink: EDIT : laganog offtopica mislim

evo update

Eto ga. Bravo. :slight_smile:

treba li __destruct ?

Ha, i možeš i ne moraš. Neće se ništa loše dogoditi ni u jednom slučaju.

Što kaže struka

dali je

ekvivalent ovome

u ovom primjeru?

Destruktor ne prima nikakve parametre. Fieldovima filename i insert možeš pristupati direktno preko pokazivača na tekući objekt - this. Dakle drugi primjer je ispravan, prvi nije.

Mogao bi write postavljati kroz metodu write tako da možeš više uzastopnih write. I open i close bi mogle biti public. tako da postoje interface za tu funkcionalnost i da korisnik može sam odabrati što će raditi sa otvorenim fileom.

Nije dobro, toliko grešaka ima da ti je to najbolje napisati od početka.

Aj kad već imaš volje raditi domaće zadaće, probaj ovo

Napravi klasu fileHandler koja sadrži :

Privatna svojstva
-imedatoteke
-resurs (resurs trenutno otvorene datoteke s funkcijom fopen() koji će koristiti metode read, write i close)

Javne metode

konstruktor

  • prima jedan argument (ime datoteke za rad)
  • provjerava da li postoji ta datoteka, ako ne postoji, pravi novu (mozes koristiti touch() funkciju)
  • postavlja svojstvo (imedatoteke) na ime datoteke

open

  • prima jedan neobavezni argument (mod rada s datotekom) kojem je početna vrijednost postavljena na čitanje i pisanje
  • funkcijom fopen() otvara navedenu datoteku u navedenom modu te postavlja svojstvo (resurs) na resurs otvorene datoteke ako je otvaranje datoteke bilo uspješno

read

  • prima jedan neobavezni argument (duzina) početna vrijednost “null” (označava koliko treba vratiti znakova iz otvorene datoteke)
  • napraviti provjeru da li je postavljen argument duzina i na osnovu toga vratiti rezultate s funkcijom fread()

write

  • prima jedan argument (sadrzaj) to je sadrzaj koji zelimo zapisati u trenutno otvorenu datoteku s funkcijom fwrite()

close

  • zatvara trenutno otvorenu datoteku s funkcijom fclose()

To je to, ako di zapne postaj tu.

p.s.

Manual je tvoj najbolji prijatelj

Destruct ti netreba, samo u slučajevima kad želiš da se ne nešto izvrši prilkom destrukcije ili ako ju želiš forsirati.