Proc --> OOP, primjeri

Pitanje za razmišljanje, vezano uz destruktore:

  • što se dešava kada se alocira neki resurs koji PHP neće oslobiti automatizmom (npr. nešto preko neke vanjske biblioteke), a skripta se prestane izvršavati pozivom procedure exit(); koja bi uloga destruktora mogla biti u tom scenariju?

Sakupljač smeća?
Mogao bi uništiti alocirane resurse i tako osloboditi memoriju.
Dobar primjer u php-u je rad sa slikama preko GD biblioteke. Ako nisi izričito uništio taj resurs, php ga sam neće uništiti.

možda nešto ovako, za početak?

Što je točno resurs? Nisam skužio :frowning:

Opet nemaš neki public interface gdje bih ja mogao upisati npr.

http://php.net/manual/en/language.types.resource.php

Evo kako sam ja to zamislio.

Primjeti da svaka metoda (osim open gdje se postavlja) koristi referencu na resurs ($this->resource)

I to bi koristio ovako

Plaćam piće! bome imam novog sadržaja za apsorbirat


Iako ti se moj primjer čini teški overkill kako bi library rasao tako bi vidio prednosti.

Jedna prednost koja mi odmah pada na pamet je da možeš u File staviti i metodu onDelete() koja se poziva FileHandleru prije brisanja a tamo postaviš kao postupati za svaki file posebno poslje, prije ili tokom brisanja.

Iako ti se moj primjer čini teški overkill kako bi library rasao tako bi vidio prednosti.

Jedna prednost koja mi odmah pada na pamet je da možeš u File staviti i metodu onDelete() koja se poziva FileHandleru prije brisanja a tamo postaviš kao postupati za svaki file posebno poslje, prije ili tokom brisanja.

http://psoug.org/snippet/Recursive_function_to_generate_a_parentchild_tree_338.htm

Primjer parent-child Tree , koji je skoro OOP , ali dali postoji neki jednostavniji način tog primjera?

ovo mi je bilo zbunjujuće

<span class="syntaxdefault">$len&nbsp;</span><span class="syntaxkeyword">=&nbsp;(!</span><span class="syntaxdefault">$length</span><span class="syntaxkeyword">)&nbsp;?&nbsp;</span><span class="syntaxdefault">filesize</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">filename</span><span class="syntaxkeyword">)&nbsp;:&nbsp;</span><span class="syntaxdefault">$length</span><span class="syntaxkeyword">;&nbsp;&nbsp;</span><span class="syntaxdefault"></span>;

ali onda sam shvatio kada sam opet malo kopao po JAVI

isto vrijedi i za sprintf funkciju :wink:


...

[code=php]<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">Class&nbsp;</span><span class="syntaxdefault">Two</span><span class="syntaxkeyword">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span class="syntaxdefault">$first</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span class="syntaxdefault">$second</span><span class="syntaxkeyword">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span class="syntaxdefault">__construct</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$first</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$second</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">first</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$first</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">second</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$second</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span class="syntaxdefault">get</span><span class="syntaxkeyword">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span class="syntaxdefault">$two</span><span class="syntaxkeyword">=&nbsp;new&nbsp;</span><span class="syntaxdefault">Two</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"prvi"</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"drugi"</span><span class="syntaxkeyword">);<br /><br />foreach(</span><span class="syntaxdefault">$two</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">get</span><span class="syntaxkeyword">()&nbsp;as&nbsp;</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">=>&nbsp;</span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxdefault">$val</span><span class="syntaxkeyword">.</span><span class="syntaxstring">"&nbsp;"</span><span class="syntaxkeyword">;<br />}<br /><br />&nbsp;</span><span class="syntaxdefault"></span>[/code]


....

[code=php]<span class="syntaxdefault"><br /></span><span class="syntaxkeyword">class&nbsp;</span><span class="syntaxdefault">Calculator</span><span class="syntaxkeyword">{<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span class="syntaxdefault">$a</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span class="syntaxdefault">$b</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;</span><span class="syntaxdefault">$c</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span class="syntaxdefault">math</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==</span><span class="syntaxstring">"+"&nbsp;</span><span class="syntaxkeyword">||&nbsp;</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==</span><span class="syntaxstring">"-"&nbsp;</span><span class="syntaxkeyword">||&nbsp;</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==</span><span class="syntaxstring">"*"&nbsp;</span><span class="syntaxkeyword">||&nbsp;</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==</span><span class="syntaxstring">"/"</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxstring">"+"</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">c</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">a&nbsp;</span><span class="syntaxkeyword">+&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">b</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxstring">"-"</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">c</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">a&nbsp;</span><span class="syntaxkeyword">-&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">b</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxstring">"*"</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">c</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">a&nbsp;</span><span class="syntaxkeyword">*&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">b</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(</span><span class="syntaxdefault">$input</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxstring">"/"</span><span class="syntaxkeyword">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">c</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">a&nbsp;</span><span class="syntaxkeyword">/&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">b</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">$this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">c</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span class="syntaxstring">"Please&nbsp;insert&nbsp;'+'&nbsp;'-'&nbsp;'*'&nbsp;'/'&nbsp;<br />"</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">FALSE</span><span class="syntaxkeyword">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />&nbsp;</span><span class="syntaxdefault"></span>[/code]