Assalamualaikum Semua
Object Interface
Object Interface memungkinkan Anda membuat kode yang menentukan
METHOD mana yang harus diimplementasikan oleh suatu Class, tanpa harus
menentukan bagaimana method ini diterapkan.
Interface didefinisikan dengan cara yang sama seperti Class, tetapi dengan kata
kunci Interface menggantikan kata kunci Class dan tanpa method apa pun yang
memiliki kontennya ditentukan.
Semua method yang dideklarasikan di Interface harus bersifat public ; ini adalah
sifat interface.
Perhatikan bahwa dimungkinkan untuk mendeklarasikan konstruktor di interface,
apa yang bisa berguna dalam beberapa konteks.
Implements
Untuk mengimplementasikan interface, operator
implement digunakan. Semua method dalam interface
harus diimplementasikan dalam class; error akan
menghasilkan kesalahan fatal. Class dapat di implement
lebih dari satu interface jika diinginkan
contoh 1 interface
contoh 2 interface(extendable interface)
Contoh 3 interface (extendable interface)
Contoh 4 interface (interface with constant)
Visibility
Visibilitas dari sebuah properti, method atau (pada PHP
7.1.0) sebuah konstanta dapat didefinisikan dengan
mengawali deklarasi dengan kata kunci public, protected
atau private.
Anggota class dideklarasikan public agar dapat diakses di
mana saja. Anggota yang dinyatakan protected hanya
dapat diakses di dalam class itu sendiri dan dengan
mewarisi class induk. Anggota yang dinyatakan sebagai
private hanya dapat diakses oleh class yang
mendefinisikan anggotanya.
Property Visibility
Class property harus didefinisikan sebagai public,
private, atau protected. Jika dideklarasikan
menggunakan var, properti akan didefinisikan
sebagai public.
Contoh 1 property declaration
Method Visibility
class Method dapat didefinisikan sebagai public, private,
atau protected. Method yang dinyatakan tanpa kata kunci
akan didefinisikan sebagai publik.
Contoh 2 Method Declaration
Visibility Konstanta (constant)
Pada PHP 7.1.0, konstanta class dapat didefinisikan
sebagai public, private, atau protected. Konstanta yang
dideklarasikan tanpa kata kunci didefinisikan sebagai
publik.
Contoh 3 Constant Declaration as of PHP
Visibility dari objek lain
Objek dengan tipe yang sama akan memiliki akses satu sama lain,
private dan protected meskipun bukan pada instance yang sama. Ini
karena detail spesifik implementasinya sudah diketahui ketika
berada di dalam objek tersebut.
Contoh 4 Accessing private members of the same object type
Hallo semua selamat datang kembali. Saya Muhammad Aslam atau panggil saja Mas Lam akan berbagi pengetahuan tentang PHP langsung saja tanpa banyak basa basi lagi yu urang belajar PHP.
Autoload
Banyak pengembang yang membuat aplikasi berorientasi objek
membuat satu file sumber PHP per definisi Class. Salah satu
gangguan terbesar adalah harus menulis daftar panjang yang
diperlukan termasuk pada awal setiap skrip (satu untuk setiap
Class).
Di PHP 5, ini tidak lagi diperlukan. Fungsi
spl_autoload_register () mendaftarkan sejumlah
autoloader, memungkinkan Class dan antarmuka dimuat secara
otomatis jika mereka saat ini tidak didefinisikan. Dengan
mendaftarkan autoloaders, PHP diberikan kesempatan terakhir
untuk memuat Class atau antarmuka sebelum gagal dan error.
Contoh autoload
Autoload
Banyak pengembang yang membuat aplikasi berorientasi objek
membuat satu file sumber PHP per definisi Class. Salah satu
gangguan terbesar adalah harus menulis daftar panjang yang
diperlukan termasuk pada awal setiap skrip (satu untuk setiap
Class).
Di PHP 5, ini tidak lagi diperlukan. Fungsi
spl_autoload_register () mendaftarkan sejumlah
autoloader, memungkinkan Class dan antarmuka dimuat secara
otomatis jika mereka saat ini tidak didefinisikan. Dengan
mendaftarkan autoloaders, PHP diberikan kesempatan terakhir
untuk memuat Class atau antarmuka sebelum gagal dan error.
Contoh autoload
<?php
spl_autoload_register(function($class_name){
include $class_name . '.php';
});
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
spl_autoload_register(function($class_name){
include $class_name . '.php';
});
$obj = new MyClass1();
$obj2 = new MyClass2();
?>
Object Interface
Object Interface memungkinkan Anda membuat kode yang menentukan
METHOD mana yang harus diimplementasikan oleh suatu Class, tanpa harus
menentukan bagaimana method ini diterapkan.
Interface didefinisikan dengan cara yang sama seperti Class, tetapi dengan kata
kunci Interface menggantikan kata kunci Class dan tanpa method apa pun yang
memiliki kontennya ditentukan.
Semua method yang dideklarasikan di Interface harus bersifat public ; ini adalah
sifat interface.
Perhatikan bahwa dimungkinkan untuk mendeklarasikan konstruktor di interface,
apa yang bisa berguna dalam beberapa konteks.
Implements
Untuk mengimplementasikan interface, operator
implement digunakan. Semua method dalam interface
harus diimplementasikan dalam class; error akan
menghasilkan kesalahan fatal. Class dapat di implement
lebih dari satu interface jika diinginkan
contoh 1 interface
<?php
interface iTemplate
{
public function setVariable($name,$var);
public function getHtml($template);
}
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach ($this->vars as $name => $value) {
$template = str_replace('{'.$name.'}', $value, $template);
}
return $template;
}
}
class BadTemplate
{
private $vars = array();
public function setVariable($name,$var){
$this->vars[$name] = $var;
}
}
interface iTemplate
{
public function setVariable($name,$var);
public function getHtml($template);
}
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach ($this->vars as $name => $value) {
$template = str_replace('{'.$name.'}', $value, $template);
}
return $template;
}
}
class BadTemplate
{
private $vars = array();
public function setVariable($name,$var){
$this->vars[$name] = $var;
}
}
contoh 2 interface(extendable interface)
<?php
interface a
{
public function foo();
}
interface b extends a
{
public function baz(Baz $baz);
}
class c implements b
{
public function foo()
{
}
public function baz(Baz $baz)
{
}
}
//fatal error
class d implements b
{
public function foo()
{
}
public function baz(Baz $baz)
{
}
}
interface a
{
public function foo();
}
interface b extends a
{
public function baz(Baz $baz);
}
class c implements b
{
public function foo()
{
}
public function baz(Baz $baz)
{
}
}
//fatal error
class d implements b
{
public function foo()
{
}
public function baz(Baz $baz)
{
}
}
Contoh 3 interface (extendable interface)
<?php
interface a
{
public function foo();
}
interface b
{
public function bar();
}
interface c extends a,b
{
public function baz();
}
class d implements c
{
public function foo(){}
public function bar(){}
public function baz(){}
}
interface a
{
public function foo();
}
interface b
{
public function bar();
}
interface c extends a,b
{
public function baz();
}
class d implements c
{
public function foo(){}
public function bar(){}
public function baz(){}
}
Contoh 4 interface (interface with constant)
<?php
interface a
{
const b = 'Interface constant';
}
echo a::b;
class b implements a
{
const b = 'Class constant';
}
interface a
{
const b = 'Interface constant';
}
echo a::b;
class b implements a
{
const b = 'Class constant';
}
Visibility
Visibilitas dari sebuah properti, method atau (pada PHP
7.1.0) sebuah konstanta dapat didefinisikan dengan
mengawali deklarasi dengan kata kunci public, protected
atau private.
Anggota class dideklarasikan public agar dapat diakses di
mana saja. Anggota yang dinyatakan protected hanya
dapat diakses di dalam class itu sendiri dan dengan
mewarisi class induk. Anggota yang dinyatakan sebagai
private hanya dapat diakses oleh class yang
mendefinisikan anggotanya.
Property Visibility
Class property harus didefinisikan sebagai public,
private, atau protected. Jika dideklarasikan
menggunakan var, properti akan didefinisikan
sebagai public.
Contoh 1 property declaration
<?php
class MyClass
{
public $public = 'Public';
private $private = 'Private';
protected $protected = 'Protected';
function printHello()
{
echo $this->public;
echo $this->private;
echo $this->protected;
}
}
$obj = new MyClass();
echo $obj->public;
echo $obj->private;
echo $obj->protected;
$obj->printHello();
class MyClass2 extends MyClass
{
public $public = 'Public2';
protected $protected = 'Protected2';
public function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public;// Works / Run Smoothly
echo $obj2->protected; // Fatal error
echo $obj2->private;// Undefined
$obj2->printHello();
class MyClass
{
public $public = 'Public';
private $private = 'Private';
protected $protected = 'Protected';
function printHello()
{
echo $this->public;
echo $this->private;
echo $this->protected;
}
}
$obj = new MyClass();
echo $obj->public;
echo $obj->private;
echo $obj->protected;
$obj->printHello();
class MyClass2 extends MyClass
{
public $public = 'Public2';
protected $protected = 'Protected2';
public function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public;// Works / Run Smoothly
echo $obj2->protected; // Fatal error
echo $obj2->private;// Undefined
$obj2->printHello();
Method Visibility
class Method dapat didefinisikan sebagai public, private,
atau protected. Method yang dinyatakan tanpa kata kunci
akan didefinisikan sebagai publik.
Contoh 2 Method Declaration
<?php
class MyClass
{
//Declare construct
public function __construct(){}
//Declare public method
public function MyPublic(){}
//Declare protected method
protected function MyProtected(){}
//Declare private method
private function MyPrivate(){}
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
$myclass = new MyClass();
$myclass->MyPublic(); //Works
$myclass->MyProtected(); //Fatal error
$myclass->MyPrivate(); //Fatal error
$myclass->foo(); //Work
class MyClass2
{
function Foo2()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
$myclass2 = new MyClass2();
$myclass2->MyPublic();
$myclass2->Foo2();
class Bar
{
public function test()
{
$this->testPrivate();
$this->testPublic();
}
public function testPublic()
{
echo "Bar::testPublic\n";
}
public function testPrivate()
{
echo "Bar::testPrivate\n";
}
}
class Foo extends Bar
{
public function testPublic()
{
echo "Foo::testPublic\n";
}
public function testPrivate()
{
echo "Foo::testPrivate\n";
}
}
class MyClass
{
//Declare construct
public function __construct(){}
//Declare public method
public function MyPublic(){}
//Declare protected method
protected function MyProtected(){}
//Declare private method
private function MyPrivate(){}
function Foo()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
$myclass = new MyClass();
$myclass->MyPublic(); //Works
$myclass->MyProtected(); //Fatal error
$myclass->MyPrivate(); //Fatal error
$myclass->foo(); //Work
class MyClass2
{
function Foo2()
{
$this->MyPublic();
$this->MyProtected();
$this->MyPrivate();
}
}
$myclass2 = new MyClass2();
$myclass2->MyPublic();
$myclass2->Foo2();
class Bar
{
public function test()
{
$this->testPrivate();
$this->testPublic();
}
public function testPublic()
{
echo "Bar::testPublic\n";
}
public function testPrivate()
{
echo "Bar::testPrivate\n";
}
}
class Foo extends Bar
{
public function testPublic()
{
echo "Foo::testPublic\n";
}
public function testPrivate()
{
echo "Foo::testPrivate\n";
}
}
Visibility Konstanta (constant)
Pada PHP 7.1.0, konstanta class dapat didefinisikan
sebagai public, private, atau protected. Konstanta yang
dideklarasikan tanpa kata kunci didefinisikan sebagai
publik.
Contoh 3 Constant Declaration as of PHP
<?php
class MyClass
{
public const MY_PUBLIC = 'public';
protected const MY_PROTECTED = 'protected';
private const MY_PRIVATE = 'private';
public function foo()
{
echo self::MY_PUBLIC;
echo self::MY_PROTECTED;
echo self::MY_PRIVATE;
}
}
$myClass = new MyClass();
MyClass::MY_PUBLIC;//Works
MyClass::MY_PROTECTED;//Fatal error
MyClass::MY_PRIVATE;//Fatal error
/*
Define new class
*/
class MyClass2 extends MyClass
{
function foo2()
{
echo self::MY_PUBLIC;
echo self::MY_PROTECTED;
echo self::MY_PRIVATE; //Fatal error
}
$myClass2 = MyClass2();
echo MyClass2::MY_PUBLIC;//Works
$myClass2->foo2();// Public and protected is works, but private doesn't works
}
class MyClass
{
public const MY_PUBLIC = 'public';
protected const MY_PROTECTED = 'protected';
private const MY_PRIVATE = 'private';
public function foo()
{
echo self::MY_PUBLIC;
echo self::MY_PROTECTED;
echo self::MY_PRIVATE;
}
}
$myClass = new MyClass();
MyClass::MY_PUBLIC;//Works
MyClass::MY_PROTECTED;//Fatal error
MyClass::MY_PRIVATE;//Fatal error
/*
Define new class
*/
class MyClass2 extends MyClass
{
function foo2()
{
echo self::MY_PUBLIC;
echo self::MY_PROTECTED;
echo self::MY_PRIVATE; //Fatal error
}
$myClass2 = MyClass2();
echo MyClass2::MY_PUBLIC;//Works
$myClass2->foo2();// Public and protected is works, but private doesn't works
}
Visibility dari objek lain
Objek dengan tipe yang sama akan memiliki akses satu sama lain,
private dan protected meskipun bukan pada instance yang sama. Ini
karena detail spesifik implementasinya sudah diketahui ketika
berada di dalam objek tersebut.
Contoh 4 Accessing private members of the same object type
<?php
/*
This class is show you how to access private method
*/
class Test
{
private $foo;
public function __construct($foo)
{
$this->foo = $foo;
}
private function bar()
{
echo "Accessed the private method";
}
public function baz(Test $other)
{
// We can change the value of property
$other->foo = 'hello';
var_dump($other->foo);
//We can also access the private method
$other->bar();
}
}
$test = new Test('test');
$test->baz(new Test('other'));
/*
This class is show you how to access private method
*/
class Test
{
private $foo;
public function __construct($foo)
{
$this->foo = $foo;
}
private function bar()
{
echo "Accessed the private method";
}
public function baz(Test $other)
{
// We can change the value of property
$other->foo = 'hello';
var_dump($other->foo);
//We can also access the private method
$other->bar();
}
}
$test = new Test('test');
$test->baz(new Test('other'));
Comments
Post a Comment