Jump to content
php.lv forumi

Klases vs Funkcijas


bfj

Recommended Posts

Sveicināti!

 

Kādu pieeju iekš PHP izvēlēties - OOP vai funkcionālo programmēšanu? Runā, ka OOP ir lielākas priekšrocības (koda izmantojamība un sakārtotība, vieglāk atrast kļūdas utt. un tā joprojām), tomēr, izmantojot funkcijas + masīvus + include failus varu sasniegt faktiski tādu pašu rezultātu, turklāt daudz ātrāk (vienīgi kļūdu labošanas process ir nedaudz sarežģītāks). Vēl gan arī jāņem vērā, ka tas var būt arī atkarīgs no projekta sarežģītības un apjoma, taču šis jautājums vairāk interesē vispārināti.

 

Esmu lasījies apkārt dažādos forumos, taču nekur tā arī nav skaidru un konkrētu piemēru, kāpēc viena pieeja būtu labāka par otru un otrādi. Kaut vai piemēram, kā tas atsauktos uz ātrdarbību.

 

Ko domā lielie PHP guru šajā forumā? Vai tas vairāk ir gaumes jautājums vai arī tomēr ir kādi konkrēti argumenti, kādēļ darīt tā un ne savādāk.

Link to comment
Share on other sites

Nevis OOP vai func., bet MVC un citus programmēšnas paternus.

Labs MVC ir tas, kas padara iešanu pa purvu par lidošanu.

Bet MVC un daudzus citus paternus daudz vienkāršāk ir realizēt ar OOP.

Piemēram, man visā kodā nav vairāk kā 2 include. Viens no tiem index failā ielādē MVC kodolu, otrs atrodas autoload funkcijā. Tādā veidā es jebkurā vietā varu izsaukt jebko, ko man vajag, neuztruacoties par includēm.

Piem., MManasFunkcijas::manaFunkcija(); automātiski tiks inklūdots fails, kurš saturēs šo klasi.

Piem., LDb::i()->query(); Automātiski tiks ielādēts DB fails, izmantojot singltona paternu, tiks iegūta db instance, ja tāda nav un izveidota konekcija, ja tāda nav. Tātad, lai jebkurā koda vietā izmantotu db, man nav jāuztraicās par inlude, man nav jāuztraucās par konektēšanos db.

 

Tāpēc iesāku labāk izpētīt populārākos programmēšanas paternus un viņu realizācijas (Kas praktiski vienmēr būs vienkāršāk realizētas ar OOP). Kā saka, nevajag izgudrot riteni otreiz.

Edited by codez
Link to comment
Share on other sites

tas ir gaumes jautājums. jo īpaši ja tu viens pats taisi projektu un pats menedžē visu kodu. galvenais, savu kodu organizēt tā, lai pašam būtu ērti strādāt. ir viena kategorija cilvēku, kas beztolkā izmanto oop tikai tāpēc, ka tā ir krutāk, piemēram, taisa objektu ar statiskām metodēm, kur mierīgi var izmantot parastas funkcijas. vnk ja kādam patīk rakstīt par 30% vairāk, lai panāktu to pašu rezultātu, tad lai tā dara. protams, ir atsevišķi gadījumi, kur patiešām var izmantot manuprāt vienīgo oop fīču: mantošanu (inheritance), bet kodējot webu kkas tāds reti kad ir vajadzīgs. anyway to pašu efektu var panākt arī savādāk

 

otra oop fīča datu abstrakcija (data abstraction/encapsulation) ir tīri koda menedžments, par ko jau es pieminēju sākumā, un var noderēt, kad projektu taisa komanda (5/10/50/... cilvēki). iespējams, tieši tāpēc oop koncepciju sākot no 60. gadiem sāka ieviest programmēšanas valodās, lai ar pašas programmēšanas valodas līdzekļiem/ierobežojumiem disciplinētu programmētājus, un tādā veidā samazinātu kļūdu varbūtību (un noturētu produkta kvalitāti) pildot lielus valdības un korporāciju pasūtījumus, kad pie projekta strādā simti un tūkstoši programmētāju. manuprāt izmantot oop vienkāršai weblapai ir pilnīgs overkills

 

pēdējā oop fīča polimorfisms (polymorphism) vispār vairāk attiecas uz tādām valodām kā c/c++ (strongly typed language), jo php mainīgajam jau tāpat var būt dažādi datu tipi. līdz ar to šī oop fīča jau ir iebūvēta pašā valodā (patiesībā tā pat nav oop fīča bet programmēšanas valodas fīča attiecībā uz datu tipiem, lai gan to bieži piedēvē oop)

 

karo4e oop ir ideāls priekš tiem, kam patīk objekti, interfeisi, un visādi abstrakcijas līmeņi. vienvārdsakot, lai sarežģītu vienkāršas lietas :D es patiešām respektēju oop, taču lietotu to tikai tajos gadījumos, kad tas man dotu reālus ieguvumus :))

 

ja tava prakse un veselais saprāts saka, ka procedurālā programmēšana tavā gadījumā ir izdevīgāka, tad tā arī dari ;)

kiss (keep it small and simple)

Link to comment
Share on other sites

tiešām jautājums oop vs funkcionālā?

ja tā, tad oop, jo funkcionalās programēšanas iespējas php ir vēl mazāk kā oop bija php4 laikos.

hehe piekrītu 100%. ne jau visi atšķir terminus "funkcionālā programmēšana" un "procedurālā programmēšana". tik viegli kļūdīties, kad ir funkcijas, tad jau "funkcionālā" :D:D:D

Link to comment
Share on other sites

ir viena kategorija cilvēku, kas beztolkā izmanto oop tikai tāpēc, ka tā ir krutāk, piemēram, taisa objektu ar statiskām metodēm, kur mierīgi var izmantot parastas funkcijas.

Es tā daru. :) Bet uzskatu, ka tā ir daudz ērtāk, dēļ __autoload, nekā uztraukties, kuru failu ar funkcijām, kad un kur inckludēt.

Link to comment
Share on other sites

hehe piekrītu 100%. ne jau visi atšķir terminus "funkcionālā programmēšana" un "procedurālā programmēšana". tik viegli kļūdīties, kad ir funkcijas, tad jau "funkcionālā" :D:D:D

Tāpēc tam ir izdomāts cits, pareizs termins - "imperatīvā programmēšana".

Link to comment
Share on other sites

Nevis OOP vai func., bet MVC un citus programmēšnas paternus.

 

Runājot par MVC u.c. Veidojat paši savus tā teikt "freimworkus" vai izmantojat gatavus?

Pagaidām nejūtos tik spēcīgs (un laika jau arī nav :) ), lai veidotu pats savu, tādēļ plānoju nedaudz iemest aci jau gatavos freimworkos. Kādus Jūs ieteiktu apskatīt? Zend? CakePHP?

Edited by bfj
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...