Primasaja.com: Service WEB, MOBILE & SOFTWARE DEVELOPMENT , ENGINEERING & ARCHITECTURE , DESIGN & CREATIVE , ADMIN SUPPORT , SALES & MARKETING , INSTALASI JARINGAN & KOMPUTER
Email: jakaprima123@gmail.com
Phone: 081311086653
Fax: -
Url:
cash, credit card
Perum Griya Rajeg Lestari Blok C No 24
Tangerang indonesia 15540

Tutorial PHP Variable Scope

0
jaka prima maulana
www.primasaja.com -

Variable scope

scope dari variable adalah context dimana dia didefinisikan. dari banyak part semua PHP variable hanya memiliki single scope. single scope ini menjangkau / spans terinclude dan dibutuhkan files. sebagai contoh:



<?php

    $a = 1;

    echo "<br>";

    include '14variable_scope_b.php';

?>

<br>

disini variable $a akan tersedia dalam script file 14variable_scope_b.php. namun, dalam function yang ditentukan pengguna, local function scope di perkenalkan. setiap variable yang digunakan dalam function secara default terbatas pada lingkup local function scope, Contohnya:

<?php

    $a = 1; // global scope


    function test(){

        echo $a; // tereferensi ke local scope 

    } 


    test(); // tidak ada isinya

?>

script ini tidak terproduksi output apapun karena echo mengacu pada local scope dari variable $a didalam fungsi bukan $a di global scope, dan $a didalam function belum terdefinisi value dalam scope tersebut. kamu mungkin memperhatikan / notice ini sedikit berbeda dengan bahasa C dalam global variable bahasa C otomatis akan bisa digunakan dalam function kecuali kalau / unless spesifik menimpa local yang terdefinisi. ini bisa mengakibatkan masalah dalam orang yang mungkin tidak sengaja / inadvertently mengubah global variable. dalam PHP global variable harus dideklarasikan global jika ingin digunakan dalam function.



Global Keyword

<?php

    $a = 1;

    $b = 2;


    function fungsi1(){

        global $a, $b;


        $b = $a + $b; // 1 + 2 = 3

    } 


    fungsi1();

    echo $b; // 3

?>

script diatas akan teroutput 3. dengan deklarasi $a dan $b global didalam function, maka semua reference ke variable akan mengacu pada global version.

tidak ada batasan untuk jumlah dari global variable yang bisa dimanipulasi oleh function.


cara kedua untuk akses variable dari global scope adalah dengan menggunakan special PHP-defined $GLOBALS array.

Contoh Penggunaan $GLOBALS sebagai ganti global

<?php

    $a = 1;

    $b = 2;


    function fungsi2(){

        $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];

    } 


    fungsi2();

    echo $b; // 3

?>

$GLOBALS array adalah asosiasi array dengan nama global variable sebagai key dan konten dari variable tersebut menjadi value array element.

perhatikan bagaimana $GLOBALS tersedia dalam scope apapun, itu karena $GLOBALS adalah superglobal. berikut adalah contoh yang mendemonstrasikan kekuatan superglobal:

<?php

function test_global(){

    // paling awal pendefinisian variable bukan "super" dan require

    // global menjadi tersedia dalam function local scope

    global $HTTP_POST_VARS;

    echo $HTTP_POST_VARS['nama'];

    

    // Superglobals tersedia dalam scope mana saja dan tidak membutuhkan 'global'. Superglobals tersedia dari PHP 4.1.0 dan HTTP_POST_VARS sekarang sudah dianggap USANG / deprecated.

    echo $_POST['nama'];

}

?>

Catatan:

penggunaan global keyword diluar function tidak error. itu bisa digunakan jika file terinclude dari dalam function.




Menggunakan static variable

fitur penting lainnya dari scope variable adalah static variable. static variable ada hanya dalam local function scope, tetapi itu tidak kehilangan valuenya ketika program tereksekusi meninggalkan scope ini. mengacu pada contoh berikut:


<?php

    function fungsi3(){

        $a = 0;

        echo $a; // 0

        $a++;

    }

    echo fungsi3(); // 0

    echo fungsi3(); // 0

?>

fungsi ini sedikit tidak berguna / useless sejak setiap kali terpanggil maka $a akan terset ke 0. $a++ dimana increment variable tidak dilayani menjadi tujuan sejak ketika keluar dari function $a variable akan menghilang. untuk membuat counting / penghitungan yang berguna dimana tidak akan kehilangan track dari count / jumlah saat ini, $a variable dideklarasika dengan static:


Contoh penggunaan static:

<?php

    function fungsi4(){

        static $a = 0;

        echo $a;

        $a++;

    }

    echo fungsi4(); // 0

    echo fungsi4(); // 1

?>

sekarang $a terinisialisasi hanya pada pemanggilan awal dan setiap waktu fungsi4 dipanggil maka akan melakukan print nilai dari $a dan menambahkannya.

static variable juga melayani satu cara untuk berurusan dengan recursive function. recursive function adalah function yang memanggil dirinya sendiri. kehati-hatian harus diambil ketikan menulis recusive function karena ini bisa membuatnya berulang tanpa batas. kamu harus yakin kamu memiliki cara yang memadai untuk mengakhiri rekursi. contoh dibawah ini simple recursif function menjumlah sampai 10 dengan menggunakan static variable $count untuk mengetahui kapan harus berhenti.


Static variabel dengan recursive function

<?php

    function fungsi5(){

        static $count = 0;


        $count++;

        echo $count;

        if ($count < 10) {

            fungsi5();

        }

        $count--;

    }


    echo fungsi5(); // 12345678910

?>

Catatan:

static variable dapat dinyatakan seperti contoh diatas. dari PHP 5.6 kamu bisa mendefinisikan values ke variable ini dimana hasil dari expression, tetapi, kamu tidak bisa menggunakan function apapun disini, karena bisa error.


contoh deklarasi static variable


<?php

    function fungsi6(){

        static $int = 0;          // benar 

        // static $int = 1+2;        // benar dari PHP 5.6

        // static $int = sqrt(121);  // salah karena itu function


        $int++;

        echo $int;

    }

    echo fungsi6(); // 1

    echo fungsi6(); // 2

?>

Catatan:

Deklarasi static terselesaikan dalam waktu kompilasi.



References dengan global dan static variable

zend engine 1, driving PHP 4, mengimplementasi static dan global modifier untuk variable dalam istilah dari references. sebagai contoh, true global variable terimport dalam function scope dengan global statement secara langsung membuat reference ke global variable. ini dapat memandu ke sifat tak terduga, dimana mengikuti contoh berikut:


<?php

    function test_global_ref() {

        global $obj;

        $obj = &new stdclass;

    }


    function test_global_noref() {

        global $obj;

        $obj = new stdclass;

    }


    test_global_ref();

    var_dump($obj);

    test_global_noref();

    var_dump($obj);

?>

contoh diatas akan teroutput

NULL

object(stdClass)(0) {

}

sama dengan sifat yang teraplikasi ke kalimat static. references tidak tersimpan statically

<?php

function &get_instance_ref() {

    static $obj;


    echo 'Static object: ';

    var_dump($obj);

    if (!isset($obj)) {

        // mendeklarasikan reference ke static variable

        $obj = &new stdclass;

    }

    $obj->property++;

    return $obj;

}


function &get_instance_noref() {

    static $obj;


    echo 'Static object: ';

    var_dump($obj);

    if (!isset($obj)) {

        // Assign the object to the static variable

        $obj = new stdclass;

    }

    $obj->property++;

    return $obj;

}


$obj1 = get_instance_ref();

$still_obj1 = get_instance_ref();

echo "\n";

$obj2 = get_instance_noref();

$still_obj2 = get_instance_noref();

?>

contoh diatas akan teroutput :


Static object: NULL

Static object: NULL


Static object: NULL

Static object: object(stdClass)(1) {

["property"]=>

int(1)

}


contoh tersebut mendemonstrasikan ketika mendeklarasikan reference ke static variable, itu tidak teringat ketika memanggil &get_instance_noref() function kedua kali.





Total Komentar : 0
Tidak Ada Komentar: