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 Dasar Classes dan Objects

0
jaka prima maulana
www.primasaja.com -

Basic dari class

definisi basic dari class dimulai dengan keyword class, diikuti nama class, lalu setelahnya diikuti dengan kurung kurawal dimana enclose / menyertakan definisi dari properti dan method kepunyaan dari class.


nama class bisa valid label apasaja, asalkan itu bukan kata dari layanan PHP. valid class dibulai dengan huruf atau underscore, diikuti dengan kalimat, angkat, atau underscore. sebagai regular expression, ini bisa jadi: ^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$.


class memungkinkan mengandung constanttanya sendiri, variable (disebut "properties"), dan function (disebut "method")/


Contoh Simple Pendefinisian Class

<?php

    class Class1{

        // deklarasi properti

        public $var = "ini default value properti";


        // deklarasi method

        public function fungsi1(){

            echo $this->var;

        }

    }

?>


pseudo-variable $this ini tersedia ketika method dipanggil dari dalam context object. $this adalah reference dari object pemanggil ()

The pseudo-variable $this is available when a method is called from within an object context. $this is a reference to the calling object (usually the object to which the method belongs, but possibly another object, if the method is called statically from the context of a secondary object). As of PHP 7.0.0 calling a non-static method statically from an incompatible context results in $this being undefined inside the method. Calling a non-static method statically from an incompatible context has been deprecated as of PHP 5.6.0. As of PHP 7.0.0 calling a non-static method statically has been generally deprecated (even if called from a compatible context). Before PHP 5.6.0 such calls already triggered a strict notice.


Contoh 2 penggunaan $this pseudo-variable

kita asumsikan error_reporting didisable untuk contoh ini; jika tidak code berikut akan memicu pemberitahuan deprecatd dan strict, respectivelty/berurutan, tergantung dari versi PHP.

<?php

    class Class21{

        function kayuh(){

            if(isset($this)){

                echo ' $this terdefinisi (';

                echo get_class($this);

                echo ")\n";

            } else {

                echo "\$this tidak terdefinisi.\n";

            }

        }

    }


    class Class22{

        function fungsi2(){

            Class21::kayuh();

        }

    }


    $class21 = new Class21();

    echo $class21->kayuh(); // $this terdefinisi (Class21)

    echo Class21::kayuh(); // $this tidak terdefinisi

    

    $class22 = new Class22();

    echo $class22->fungsi2(); // $this terdefinisi (Class21)

    echo Class22::fungsi2(); // $this tidak terdefinisi

?>


output contoh diatas kalo di PHP 7:

$this terdefinisi (Class21)

$this tidak terdefinisi

$this tidak terdefinisi

$this tidak terdefinisi



new

untuk membuat instance dari class, kata (new) harus digunakan. sebuah object akan selalu terbuat kecuali kalau object memiliki constructor yang telah terdefinisi itu melemparkan pengecualian error. Class harus terdefinisi sebelum instance (dan dalam beberapa kasus itu adalah kebutuhan).


jika string mengandung nama dari class digunakan menggunakan new, instance baru dari class akan terbuat. jika class dalam namespace, itu harus memenuhi nama syarat harus digunakan ketika melakukannya.


Contoh membuat instance


<?php

    $instance = new Class1();


    // ini juga bisa dibuat dengan variable:

    $nama_class = 'Class1';

    $instance = new $nama_class();

?>

dalam context class, ini memungkinkan membuat new object dengan new self dan new parent.

ketika mendefinisikan instance yang sudah terbuat ke variable baru, variable baru akan mengakses instance yang sama seperti object yang terdefinisi. sifat ini adalah sama ketika instance melewati ke function. copty dari object yang telah terbuat dapat dibuat dengan cloning itu.


Contoh Penugasan Object

<?php

    $instance = new Class1();

    $tugas = $instance;

    $reference =& $instance;


    $instance->var = "akan berisi value ini";

    $instance = null; // $instance dan $reference menjadi null


    var_dump($instance); // null

    var_dump($reference); // null

    var_dump($tugas); // object(Class1)#3 (1) { ["var"]=> string(21) "akan berisi value ini" }

?>

PHP 5.3.0 memperkenalkan beberapa jalan baru untuk membuat instance dari object:


Contoh new objects

<?php

    class Class31{

        static public function method1(){

            return new static;

        }

    }


    class Class32 extends Class31{}


    $obj1 = new Class31();

    $obj2 = new $obj1;

    var_dump($obj1 !== $obj2); // bool(true)


    $obj3 = Class31::method1();

    var_dump($obj3 instanceof Class31); // bool(true)


    $obj4 = Class32::method1();

    var_dump($obj4 instanceof Class32); // bool(true)

?>

PHP 5.4.0 memperkenalkan kemungkinan akses member dari pembuatan object baru dalam single ekspresion:


Contoh akses member dari pembuatan object baru

<?php

    date_default_timezone_set('Asia/Jakarta');

    echo (new DateTime())->format('Y'); // tanggal sekarang

?>

Properties dan method

class properties dan method hidup dalam "namespaces" yang berbeda, jadi ini bisa punya property dan method dengan nama yang sama. mengacu pada kedua property dan method memiliki notasi yang sama, dan maupun property akan bisa di akses atau method akan di panggil. hanya bergantung pada context, yaitu apakah penggunaan akses variable atau function call.


Contoh akses properti vs method call

<?php

    class Class41{

        public $var1 = 'property 1';

        public function var1(){

            return 'print method';

        }

    }


    $obj = new Class41();

    echo $obj->var1;  // property 1

    echo $obj->var1(); // print method

?>



itu berarti memanggil anonymous function dimana telah didefinisikan ke property tidak bisa secara langsung bisa. sebagai contoh, property harus ditugaska nke variable dulu, contoh. Pada PHP 7.0.0 dimungkinkan untuk memanggil properti seperti itu secara langsung dengan melampirkannya dalam tanda kurung.


Contoh memanggil Anonymous function yang disimpan dalam property

<?php

    class Class51{

        public $property1;

        public function __construct(){

            $this->property1 = function(){

                return 10;

            };

        }

    }


    $obj51 = new Class51();


    // dari PHP 5.3.0:

    $func = $obj51->property1;

    echo $func(); // 10


    // echo ($obj51->property1)(); // di PHP 7.0.0 bisa pakai ini

?>

Extends

class bisa mewarisi / inherit method dan properties ke class lain dengan menggunakan kata extends dalam deklarasi class. ini tidak possible untuk extend banyak classes; class hanya bisa diwariskan dari satu base class.


method diwariskan dan properties bisa di timpa dengan mendeklarasikan ulang dia dengan nama yang sama dengan yang telah didefinisikan dalam parent class. bagaimanapun, jika parent class telah mendefinisikan method sebagai final, method tersebut bisa saja tidak di timpa. ini memungkinkan untuk akses timpaan method atau static properties by referencing mereka dengan parent::.


ketika menimpa method, tanda parameter harus berisi sama atau PHP akan membuat pesan E_STRICT level error. ini tidak terjadi dengan constructor, dimana mengijinkan penimpaan dengan parameter yang berbeda.


Contoh simple pewarisan / inheritance class

<?php

    class Class61 extends Class1{

        //mendefinisikan ulang parent method

        function fungsi1(){

            echo "class 61\n";

            parent::fungsi1();

        }

    }


    $extends = new Class61();

    $extends->fungsi1(); // output: ini default value properti // extending classnya tidak terprint berarti tereksekusi yg parent func


?>


::class

sejak PHP 5.5 class keyword juga digunakan untuk nama resolusi class. kamu bisa dapat string yang mengandung memenuhi nama kualifikasi dari nama class dengan menggunakan ClassName::class. ini particulary / biasanya berguna dengan namespaced classes.


Contoh nama class resolusi


<?php

    namespace NameSpace1{

        class Class71{


        }


        echo Class71::class;

    }

?>

contoh diatas akan menghasilkan output:

NameSpace1\Class71


Catatan:

nama class resolusi menggunakan ::class adalah waktu compile transformasi. itu berarti pada satu waktu nama class string terbuat tidak autoloading yang terjadi. Sebagai akibatnya, nama kelas diperluas bahkan jika kelas tidak ada. Tidak ada kesalahan yang dikeluarkan dalam kasus itu.



Total Komentar : 0
Tidak Ada Komentar: