C 1
chengdu
xranzei 1
xranzei
zendor2 1
zendor2
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Almira2 1
Almira2
romegames 1
romegames
D 1
delimuratt
melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
Fethi Polat 1
Fethi Polat
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP – Arayüzler

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,442
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 8 Gün
Başarım Puanı
1,051
MmoLira
695,207
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

cats.jpg


Tıpkı bir sınıfın nesneleri için bir şablon olması gibi, PHP'deki bir arayüz de sınıflar için bir şablon olarak çağrılabilir. Bir sınıf örneklendiğinde, sınıfta tanımlanan özelliklerin ve yöntemlerin ona erişilebilir olduğunu biliyoruz. Benzer şekilde, PHP'deki bir arayüz, yöntemleri argümanları ve dönüş değeriyle birlikte bildirir. Bu yöntemlerin herhangi bir gövdesi yoktur, yani arayüzde hiçbir işlevsellik tanımlanmamıştır.

Somut bir sınıfın arayüzdeki yöntemleri uygulaması gerekir. Başka bir deyişle, bir sınıf bir arayüzü uyguladığında, arayüzdeki tüm yöntemler için işlevselliği sağlamalıdır.

Bir arayüz, bir sınıfın tanımlandığı şekilde tanımlanır; ancak sınıf yerine " arayüz " anahtar sözcüğü kullanılır.
interface myinterface {
public function myfunction(int $arg1, int $arg2);
public function mymethod(string $arg1, int $arg2);
}

Arayüz içindeki metotların herhangi bir işlevsellikle donatılmadığını unutmayın. Bu metotların tanımları, bu arayüzü uygulayan sınıf tarafından sağlanmalıdır.

Bir alt sınıf tanımladığımızda " extens " anahtar kelimesini kullanırız. Bu durumda " implements " anahtar kelimesini kullanması gereken sınıf.

Arayüzde tanımlanan tüm metotlar, aynı sayıda ve türde argüman ve dönüş değeri ile tanımlanmalıdır.

class myclass implements myinterface {
public function myfunction(int $arg1, int $arg2) {
## implementation of myfunction;
}
public function mymethod(string $arg1, int $arg2) {
# implementation of mymethod;
}
}

Bir arayüzde tanımlanan tüm metotların public olması gerektiğini unutmayın.

Örnek

Shape adında bir arayüz tanımlayalım. Bir şeklin belirli bir alanı vardır. Dikdörtgen, daire vb. gibi farklı geometrik görünüme sahip şekilleriniz vardır ve her birinin farklı formüllerle hesaplanan bir alanı vardır. Bu nedenle, shape arayüzü bir float değeri döndüren area() metodunu bildirir.

interface shape {
public function area(): float;
}

Sonra, şekil arayüzünü uygulayan bir daire sınıfı tanımlayacağız, uygulamak için, sınıf arayüzdeki fonksiyonların somut bir uygulamasını sağlamalıdır. Burada, daire sınıfındaki area() fonksiyonu, verilen bir yarıçaptaki dairenin alanını hesaplar.

class circle implements shape {
var $radius;
public function __construct($arg1) {
$this->radius = $arg1;
}
public function area(): float {
return pow($this->radius,2)*pi();
}
}

Artık circle sınıfından bir nesne tanımlayabilir ve area() metodunu çağırabiliriz.

$cir = new circle(5);
echo "Radius : " . $cir->radius . " Area of Circle: " . $cir->area(). PHP_EOL;

Bir arayüz, birbirleriyle ilgisi olmayan herhangi sayıda sınıf tarafından uygulanabilir; ancak uygulayan sınıf, arayüzdeki her yöntemin işlevselliğini sağlar.

İşte şekli uygulayan bir Square sınıfı. area() metodu, yan özelliğin karesini döndürür.

class square implements shape {
var $side;
public function __construct($arg1) {
$this->side = $arg1;
}
public function area(): float {
return pow($this->side, 2);
}
}

Benzer şekilde bir Square nesnesi oluşturun ve area() metodunu çağırın.

Örnek

Aşağıda daire ve kare sınıfları tarafından uygulanan bir şekil arayüzü için tam kod verilmiştir.

PHP:
<?php
   interface shape {
      public function area(): float;
   }

   class square implements shape {
      var $side;
      public function __construct($arg1) {
         $this->side = $arg1;
      }
      public function area(): float {
         return pow($this->side, 2);
      }
   }
   class circle implements shape {
      var $radius;
      public function __construct($arg1) {
         $this->radius = $arg1;
      }
      public function area(): float {
         return pow($this->radius,2)*pi();
      }
   }

   $sq = new square(5);
   echo "Side: " . $sq->side .  " Area of Square: ". $sq->area() . PHP_EOL;

   $cir = new circle(5);
   echo "Radius: " . $cir->radius .  " Area of Circle: " . $cir->area(). PHP_EOL;
?>

Aşağıdaki çıktıyı üretecektir:

Side: 5 Area of Square: 25
Radius: 5 Area of Circle: 78.539816339745

PHP'de Çoklu Kalıtım

PHP, iki ana sınıfı genişleten bir alt sınıf oluşturma olanağına sahip değildir.

class child extends parent1, parent2

kabul edilmez. Ancak, PHP bir ebeveyn sınıfı genişleten bir alt sınıfa sahip olmayı ve bir veya daha fazla arayüzü uygulamayı destekler.

Başka bir sınıfı genişleten ve bir arayüzü uygulayan bir sınıfı gösteren aşağıdaki örneğe bakalım.

İlk olarak, ebeveyn sınıf işaretleri. Üç öznedeki işaretleri temsil eden üç örnek değişkeni veya özelliği $m1, $m2, $m3 vardır. Nesneyi başlatmak için bir oluşturucu sağlanır.
class marks {
protected int $m1, $m2, $m3;
public function __construct($x, $y, $z) {
$this->m1 = $x;
$this->m2 = $y;
$this->m3 = $z;
}
}

Şimdi, bir float döndürmesi gereken ancak bir fonksiyon gövdesine sahip olmayan bir percentage() metodunu bildiren yüzde adında bir arayüz sağlıyoruz.

interface percent {
public function percent(): float;
}

Şimdi marks sınıfını genişleten ve arayüzde percentage() metodu için uygulama sağlayan bir sınıf geliştiriyoruz.

class student extends marks implements percent {
public function percent(): float {
return ($this->m1+$this->m2+$this->m3)*100/300;
}
}

Öğrenci sınıfı ana kurucuyu miras alır, ancak not yüzdesini döndüren parent() metodunun uygulamasını sağlar.

Örnek

Kodun tamamı şu şekildedir:

PHP:
<?php
   class marks {
      protected int $m1, $m2, $m3;
      public function __construct($x, $y, $z) {
         $this->m1 = $x;
         $this->m2 = $y;
         $this->m3 = $z;
      }
   }
   interface percent {
      public function percent(): float;
   }

   class student extends marks implements percent {
      public function percent(): float {
         return ($this->m1+$this->m2+$this->m3)*100/300;
      }
   }

   $s1 = new student(50, 60, 70);
   echo "Percentage of marks: ". $s1->percent() . PHP_EOL;
?>

Aşağıdaki çıktıyı üretecektir:

Percentage of marks: 60

PHP'deki arayüz, sınıfların kendilerine ait farklı ama somut bir uygulama sağlamak için kullandıkları bir yöntem çerçevesini tanımlar.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst