Jump to content
php.lv forumi

PHP Clases pret funkcijām


Wuu

Recommended Posts

Kāda jēga no klaassēm ja tās ir vienas un tās pašas funkcijas. Lasiju internetā, ka viegrāk lasāms, saprotmāks un blablab bla... (Buļa kakas un tas ir stipri subjektīvs jēdziens)

 

Priekšrocības kādas? Būt forši ar skaidru piemēru, kad ar funkciju nevar kaut ko izdarīt, ko var ar klasi.

Link to comment
Share on other sites

Say whaat?

 

No klasēm var inicializēt objektus, kas ietver sevī gan metodes, gan propertijus, turpretī, funkcijas ir tikai metodes, kurām mainīgie ir tikai savā scope'ā ja vien nav kaut kādi globālie

Edited by waplet
Link to comment
Share on other sites

Riktīgs trollis...

Viselementārākais piemērs - klase User, kurā ir iekšā gan visādi privāti lauki (name, age, gender, address, phone u.c.), gan getteri, gan setteri (ar visām pārbaudēm), kā arī metodes datu saglabāšanai datubāzē.

Edited by jurchiks
Link to comment
Share on other sites

Dievs pasarg, stundas divas skatos par PHP opjektu orentētu programēšanu. Nu sit nost neredzu plusus vai nepieciešamību. Tāpēc jau jautāju! 

 

Riktīgs trollis...
Viselementārākais piemērs - klase User, kurā ir iekšā gan visādi privāti lauki (name, age, gender, address, phone u.c.), gan getteri, gan setteri (ar visām pārbaudēm), kā arī metodes datu saglabāšanai datubāzē.

Un parasta funkcijā to nevar izdarīt? Parādi piemēru lūdzu.

Link to comment
Share on other sites

Īsumā, ko nevar ar funkcijām:

  • protected, private mainīgie - lai visādi funkciju un globālo lietotāji izmantotu citu veidoto kodu tikai tam paredzētajā veidā.
  • autoload - ļauj automātiski ielādēt klases, kuras nav vēl inklūdotas.
  • magic metodes - piemēram ļauj objektiem apstrādāt mainīgos, kuri nav definēti.
  • interfeisu definēšana - definē abstraktas metodes, kuras rakstot interfeisu ir jādefinē - samazina kļūdu skaitu, jo ar funkcijām tu vienkārši vari neuzrakstīt kādu interfeisa funkcionalitāti.
  • Kaudze OOP paternu, piemēram, Strategy, u.c., kurus ar funkcijām nerealizēsi.

Es šeit protams nerunāju par elementāru koda modularitāti un organizētību.

Link to comment
Share on other sites

> Ja tev vajag objektorientētas lietas, vai vismaz kaut kā strukturēt tās pašas funkcijas, tad bez klasēm kaut kā sūdīgi.

 

Tu apgalvo, ka nevar struktūrēt parastu programmu bez klasēm un OOP? Pirmais, kas nāk prātā, ir...

 

https://github.com/jgm/pandoc

 

https://github.com/xmonad/xmonad

Link to comment
Share on other sites

 

  • magic metodes - piemēram ļauj objektiem apstrādāt mainīgos, kuri nav definēti

 

But magic is bad :/

 

Nepietiks jau ar to, ka rakstot OOP, tavs kods būs lasāmāks/pārskatāmāks/saprotamāks? Priekš sevis visu darot jau tīri po, var kaut datus glabāt teksta failos un vēl sazinko. Bet apžēlojies par tām nabaga dvēselēm, kam nāksies to kodu supportēt.

Vai tomēr tam cilvēkam ir vajadzība tērēt laiku mācoties un studējot Tavu reliģiju un piederību, lai vispār varētu kodā kaut ko izdarīt? Tā vietā piekopt daudz maz "patternu" ( <-- Ja to tā var nosaukt) un izraut daļu lapu no savas burvestību pārpilnās grāmatas?

 

Nevajag sarežģīt lietas.

Edited by Kemito
Link to comment
Share on other sites

Piemērs, kur magic metodes strādā lieliski - dinamisks(ne strikti iepriekš predefinēts) ORM objects.

$user=new User();
$user["name"]="john"; //šeit name ar maģisku metodi tiek pievienots izmainītajiem laukiem, lai pēc tam insert metode zinātu kādu kveriju ģenerēt. name - db tabulas lauks.
$user->insert();

Bet, ja runājam par to, kas ir slikts, tad PHP pēc definīcijas nav nekas labs, lai rakstītu lielas, viegli uzturamas, ar maz kļūdām un ātri strādājošas aplikācijas.

PHP ir laba prototipēšanai un tur maģija netraucē.

Priekš lielām, viegli uzturamām, ātri strādājošam, viegli skeilojamām aplikācijām, par PHP daudz labāka ir Scala.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Loading...
×
×
  • Create New...