Coders please advice me

BLACKLIST_MEMBER

Well-known member
  • Feb 9, 2008
    37,854
    14,810
    113
    127.0.0.1
    redirect උනාට ඊට යට කෝඩ් එක දුවනවා නේද සමහර ඒවගේ.
    redirect වෙන කෝඩ් එකේදී අවසානයේ die එකක් දානවා. එතකොට යට කොටස රන් වෙන්නේ නැහැ. ඒක එන්නේ සාමාන්‍යයෙන් framework එකෙමයි. එතකොට අපිට die එක දාන්න අමතක වෙන්නේ නැහැ. ඒ මෙතඩ් අහලා තියෙන්නේ එතනින් එහාට kill වෙන්න නිසා. එහෙම නැත්තන් return keyword එක හරහා මෙතඩ් (function) එක පාස් කරනවා
    එතකොට එතනින් එහාට කෝඩ් එක රන් වෙන්නේ නැහැ.

    මං ඒකයි කිව්වේ අවස්තාව අනුව පාවිච්චි කරන විදිහවල් දෙකක් කියල. නමුත් ඕනෑම එකක් ලියන්න පුළුවන් else එක හලලා performance ගැන හිතල ඔය විදිහට.
    මම ලියන්නෙම 1st මෙතඩ් එකේ විදිහට.

    හේතුව, අනික් හැම framework එකකම වගේ ඔය විදිහ තමයි ගොඩක් උන් පාවිච්චි කරලා තියෙන්නේ සහ stackoverflow එහෙම ගොඩක් තියෙනවා ඔය number 1 මෙතඩ් එක හොඳයි කියල.
    එත් ඇරෙන්න xDebug CacheGrind වලින් performance check කරලා තියෙනවා 1st method එක fast 2nd එකට වඩා.
     
    Last edited:

    TNHM

    Well-known member
  • Jan 3, 2017
    5,328
    15,488
    113
    redirect උනාට ඊට යට කෝඩ් එක දුවනවා නේද සමහර ඒවගේ.

    උ අහලා තියෙන ප්‍රශ්නේ තේරුම් ගනිල්ලා බන්. තියෙන්නේ වෙන ප්‍රශ්නයක් උබලා හිතන් ඉන්න එක නෙමෙයි
     

    BLACKLIST_MEMBER

    Well-known member
  • Feb 9, 2008
    37,854
    14,810
    113
    127.0.0.1
    First method එක තමයි හොද

    බෙස්ට් ප්‍රක්ටික්ස් එක තමයි method එකකින් පුළුවන් තරම් ඉක්මනට return වෙන එක.

    PHP:
    if(canLogin) {
        if(isActive) {
            if(isLogin) {
                //do somthing here
            }else{
                return Error("not logged in")
            }
        }else{
            return Error("not active")
        }
    }else{
        return Error("cannot login")
    }

    මේ වෙනුවට


    PHP:
    if(!canLogin) {
        return Error("cannot login")
    }
    if(!isActive) {
        return Error("not active")
    }
    if(!isLogin) {
        return Error("not logged in")
    }
                
                
    // Do something ehere


    කලින් රෙටර්න් කරාම මේන්ටේන් කරන්න සහ කියවන්න ලේසි

    :yes:
     

    BLACKLIST_MEMBER

    Well-known member
  • Feb 9, 2008
    37,854
    14,810
    113
    127.0.0.1
    මමත් දැක්ක එක එක ලය්බරීස් රීඩ් කරද්දි ඔය විදියට ලියල තියෙනව. නමුත් මම වෙනද ලියන්නේ 2වෙනි විදියට. ඒකයි ඇහැුවෙ. බට් මට තාමත් කියවල තේරුම් ගන්න ලේසි 2වෙනි එක. :P
    dan ubama kiwwe 2nd eka ubata therum ganna lesie kiyala?
    මමත් දැක්ක මචං ගොඩක් උන් මේ වගේ ගහනව. මම හිතන් හිටියේ කලින් ක්‍රමේදි interpreter එකෙන් අදාල නැති බ්ලොක්ස් ignore/skip කරල දාන නිසා අවුලක් නෑ කියල. අනිත් එක 2වනි ක්‍රමේදි එහෙම ස්කිප් වීමක් නෑනේ එක දිගට රන් වෙනව ඉතින් හිතන් හිටියේ ඒ අනුව බැලුවම 2වනි ක්‍රමේ අවුලක් කියල. මම පලවනෙි ක්‍රමේට වඩාත් කැමති වෙන්න හේතුව. ඒක කියවන්න ලේසි. මොකද හොද ලොජිකල් flow එකක් තියෙන නිසා. :D

    dan muge code eka baluwahama kohomada 1st eka therum ganna lesi une :rofl:
     

    LazyLizard

    Well-known member
  • Aug 27, 2015
    59,445
    14,447
    113
    10
    කටුකරෝලගම
    redirect වෙන කෝඩ් එකේදී අවසානයේ die එකක් දානවා. එතකොට යට කොටස රන් වෙන්නේ නැහැ. ඒක එන්නේ සාමාන්‍යයෙන් framework එකෙමයි. එතකොට අපිට die එක දාන්න අමතක වෙන්නේ නැහැ. ඒ මෙතඩ් අහලා තියෙන්නේ එතනින් එහාට kill වෙන්න නිසා. එහෙම නැත්තන් return keyword එක හරහා මෙතඩ් (function) එක පාස් කරනවා
    එතකොට එතනින් එහාට කෝඩ් එක රන් වෙන්නේ නැහැ.

    මං ඒකයි කිව්වේ අවස්තාව අනුව පාවිච්චි කරන විදිහවල් දෙකක් කියල. නමුත් ඕනෑම එකක් ලියන්න පුළුවන් else එක හලලා performance ගැන හිතල ඔය විදිහට.
    මම ලියන්නෙම 1st මෙතඩ් එකේ විදිහට.

    හේතුව, අනික් හැම framework එකකම වගේ ඔය විදිහ තමයි ගොඩක් උන් පාවිච්චි කරලා තියෙන්නේ සහ stackoverflow එහෙම ගොඩක් තියෙනවා ඔය number 1 මෙතඩ් එක හොඳයි කියල.
    එත් ඇරෙන්න xDebug CacheGrind වලින් performance check කරලා තියෙනවා 1st method එක fast 2nd එකට වඩා.
    ඒක විශේෂයෙන් කියන්න ඕනේ die එකක් අගට දාන්න කියල නේද. නැත්තන් redirect උන පමණින් වැඩේ ඉවරයි කියල නිකන් හිටියොත් වැරදි නෙ.
     

    BLACKLIST_MEMBER

    Well-known member
  • Feb 9, 2008
    37,854
    14,810
    113
    127.0.0.1
    ඒක විශේෂයෙන් කියන්න ඕනේ die එකක් අගට දාන්න කියල නේද. නැත්තන් redirect උන පමණින් වැඩේ ඉවරයි කියල නිකන් හිටියොත් වැරදි නෙ.
    මේ දාල තියෙන්නේ dummy code එකක් කියල ලියල තියනවනේ.
    TNHM මෙම්බෙර් ගේ කෝඩ් එක ප්‍රශ්නයක් නැහැ return දාල තියෙන්නේ. return use කරනවා redirect කරද්දී. ඔතන redirect නෙමෙයි මොකක් හරි වෙන දෙයක් වෙන්න පුළුවන්. redirect වෙනකොට කෝඩ් එක redirect මෙතඩ් එකේ kill එකක් තියෙනවා.

    setup and go විදිහට ලියපු කෝඩ් වල පහල කොටස රන් වෙන්නේ. ඒ කියන්නේ මුලින් අවශ්‍ය දේවල් ටික හදාගෙන (redirect කරන්නේ කොහෙටද, error එකක් විදිහටද, ඉන්ෆෝමේෂන් පෙන්නන්න ඕන ඒවා redirect වෙනකොට වගේ දේවල්), පස්සේ තමයි කෝඩ් එක එක්සිකියුට් කරවන්නේ. event dispatcher වගේ එකකින්, ඒ කියන්නේ වෙනම තැනකින්.
    ඉතිං ඒක එහෙම කියන්න බැහැ, if එකක බ්ලොක් එකේ අගට die එකක් අනිවා එන්න ඕන කියල නීතියක් විදිහට කියන්න කොහෙවත් බැහැ ඒක ලියන එකා දැනගන්න ඕන ඌ ට අවශ්‍ය විදිහට රන් කරවන්න.

    ඕක ඩමියක්, වෙන ඕනෑම දෙයක් වෙන්න පුළුවන් ඔතන, kill නොවී උනත්.

    උදාහරණයක් විදිහට,
    Code:
    GuestCounter = $this->getGuestsCount();
    
    if (!$visitor->isMember()) {
     GuestCounter++
     $db->commit();
    }
    $db->commit();
    ඔතන die එකක් ඕනේ නැහැ.
    නමුත් db එකට commit වෙනවා. ඒ කෝඩ් එකත් රන් වෙනවා. රන් උනාට දෙවැනි පාර commit වෙන්නේ නැහැ කලින් කරලා නිසා.

    නැත්තන් මේ වගේ කෝඩ් එකක් ගත්තොත්
    Code:
    function1{
    GuestCounter = $this->getGuestsCount();
    
    if (!$visitor->isMember()) {
     GuestCounter++
     return $visitor;
    }
    $db->commit();
    }
    ආපහු වෙන මෙතඩ් එකකදී
    $membersRepository->setVisitors($guestCounter);
    $member->save();
    [/SIZE]
    [SIZE=3]
    කියල call කරන්න පුළුවන්.save කරනකොට.
    ඉතින් එක ලියන විදිහ අනුව වෙනස් වෙනවා.

    මූ අහල තියෙන්නේ පල්ලෙහා කොටස රන් වෙන්නේ නැහැ කියල කෙලින්ම අපිට කියල. එතකොට කොහොමත් පලවෙනි මෙතඩ් එක තමයි සරල සහ efficient.
     
    Last edited:

    LazyLizard

    Well-known member
  • Aug 27, 2015
    59,445
    14,447
    113
    10
    කටුකරෝලගම

    මූ අහල තියෙන්නේ පල්ලෙහා කොටස රන් වෙන්නේ නැහැ කියල කෙලින්ම අපිට කියල. එතකොට කොහොමත් පලවෙනි මෙතඩ් එක තමයි සරල සහ efficient.

    මෙයා යට පොස්ට් එකක කියල තියෙනවා "මොකද රීඩිරෙක්ට් වෙන නිසා ඊට යට ටික වැඩ කරන්නෑනේ කියල හිතල" කියල. අදාළ ලැන්ග්වේජ් එකේ දීල තියෙන මොකක්හරි රීඩිරෙක්ට් කෝඩ් එක දාපුවම බ්‍රවුසර් ඒකෙන් අදාළ පේජ් එකට මාරුවෙනවා වගේ කෝඩ් එකත් එතනින් නතරවෙලා ඉබේම යට කොටස වැඩ නොකර තියෙනවා කියල හිතන් ඉන්න බවයි මට නං පෙනුනේ. ඒකයි මම කිවේ සමහර ඒවගේ එහෙම නවතින්නේ නෑ කියල.

    මනුස්සය අහන්නේ ඒ ගැන නෙවේ නං ඔයාලගේ උත්තර හරි ඇති පෆොමන්ස් අනන් මනං ගැන නං මම දන්නේ නෑ.
     

    dayt0na

    Well-known member
  • Jan 2, 2012
    29,700
    28,629
    113
    මෙයා යට පොස්ට් එකක කියල තියෙනවා "මොකද රීඩිරෙක්ට් වෙන නිසා ඊට යට ටික වැඩ කරන්නෑනේ කියල හිතල" කියල. අදාළ ලැන්ග්වේජ් එකේ දීල තියෙන මොකක්හරි රීඩිරෙක්ට් කෝඩ් එක දාපුවම බ්‍රවුසර් ඒකෙන් අදාළ පේජ් එකට මාරුවෙනවා වගේ කෝඩ් එකත් එතනින් නතරවෙලා ඉබේම යට කොටස වැඩ නොකර තියෙනවා කියල හිතන් ඉන්න බවයි මට නං පෙනුනේ. ඒකයි මම කිවේ සමහර ඒවගේ එහෙම නවතින්නේ නෑ කියල.

    මනුස්සය අහන්නේ ඒ ගැන නෙවේ නං ඔයාලගේ උත්තර හරි ඇති පෆොමන්ස් අනන් මනං ගැන නං මම දන්නේ නෑ.

    katussath code kerenewada :oo:
     

    temp_life

    Banned
  • Jan 5, 2019
    104
    13
    18
    1st method.
    Professional PHP Developers la use karanne 1st method eka.

    Eetapasse eka readable wenna wrapper ekak athule daanawa.

    ekata heethuwa:

    IF / Else statesments use karanakota
    dan trend eka Else eka atha arinawa default eka yatin set karala.

    ethakota palaweni kotasa witharai execute wenne ethakota yata kaalla execute karanna process eka use wenne naha.
    execution time eka adui ethakota code eka run wenna. performance wadie. OPCode Cache eken use wenawa eetapasse.

    IF statements wala OR, AND use wenakotath oya wage.

    example:

    Code:
    if ( false_statement OR true_statement AND true_statement) 
    then {
    return (function)
    }
    
    do that.
    me code eka php code eka execute wenakota, mulin thiyena OR ekata mulin thiyena kotasa TRUE una gaman IF statement eka ethanin ehaata execute karana eka nawaththanawa. AND kaallata yanna awashya nathi nisaa.
    OR ekata meha kotasa FALSE unoth witharai next kotasata yanne.
    oka gena php.net eke thiyenawa.

    oya wage godak dewal thiyenawa kaalayath ekka igenaganna ona dewal. Code eka run una pamanin eka efficient wenne naha. stackoverflow athi ona tharam oya gana katha karala


    uba hari