Interfaces & Abstract in PHP

 


Interfaces & Abstract in PHP



قائمة المصطلحات والتعريفات: 

المصطلح باللغة العربية

المصطلح باللغة الإنجليزية

التعريف

واجهة

Interface

نوع من الفئات التي تحتوي فقط على تعريفات للطرق دون تنفيذها، وتستخدم لفرض تنفيذ طرق معينة في الفئات التي تطبقها.

فئة مجردة

Abstract Class

فئة تحتوي على طرق قد تكون لها تعريفات وقد تكون بدون، ولا يمكن إنشاء كائنات منها مباشرة، بل يتم توريثها.

طريقة مجردة

Abstract Method

طريقة يتم تعريفها في الفئة المجردة دون تنفيذها، وتحتاج إلى أن تنفذ في الفئات الفرعية.


 

المقدمة:

في البرمجة الكائنية في PHP، تلعب الواجهات والفئات المجردة لها دورا مهما في تصميم الهيكلية الكائنية للتطبيقات. تستخدم الواجهات والفئات المجردة لتحقيق التعدد في التنفيذ وضمان التزام الفئات بطرق محددة

تهدف هذه الوثيقة إلى شرح مفهومي الواجهات (Interfaces) والفئات المجردة (Abstract Classes) في لغة البرمجة PHP



ما هي الواجهات (Interfaces)؟


هي نوع خاص من الفئات التي تحتوي على تعريفات للطرق دون تنفيذها. الفئة التي تطبق واجهة معينة يجب أن توفر تنفيذا لجميع الطرق المعرفة في تلك الواجهة.


كيفية استخدام الواجهات في PHP


يتم تعريف الواجهة باستخدام الكلمة المحجوزة interface. الفئة التي تطبق الواجهة تستخدم الكلمة المحجوزة implements



<?php

interface Animal {

    public function makeSound();

}


class Dog implements Animal {

    public function makeSound() {

        echo "Woof!";

    }

}


class Cat implements Animal {

    public function makeSound() {

        echo "Meow!";

    }

}


$dog = new Dog();

$dog->makeSound(); // Woof!


$cat = new Cat();

$cat->makeSound(); // Meow!

?>




ما هي الفئات المجردة (Abstract Classes)؟


الفئات المجردة هي فئات تحتوي على طرق مجردة (بدون تنفيذ) وطرق أخرى قد تكون معرفة بالكامل. لا يمكن إنشاء كائنات مباشرة من الفئات المجردة، بل يجب توريثها وتوفير تنفيذ للطرق المجردة في الفئات الفرعية.


كيفية استخدام الفئات المجردة في PHP


يتم تعريف الفئة المجردة باستخدام الكلمة المحجوزة abstract. الطريقة المجردة يتم تعريفها باستخدام الكلمة المحجوزة abstract ولا تحتوي على جسم.


<?php

abstract class Vehicle {

    protected $color;


    public function __construct($color) {

        $this->color = $color;

    }


    abstract public function move();


    public function getColor() {

        return $this->color;

    }

}


class Car extends Vehicle {

    public function move() {

        echo "The car is driving.";

    }

}


class Bicycle extends Vehicle {

    public function move() {

        echo "The bicycle is pedaling.";

    }

}


$car = new Car("red");

$car->move(); // The car is driving.


$bicycle = new Bicycle("blue");

$bicycle->move(); // The bicycle is pedaling.

?>




الفرق بين الواجهات والفئات المجردة

Abstract Classes الفئات المجردة

الواجهات Interfaces

تحتوي على تعريفات وتنفيذات للطرق

تحتوي فقط على تعريفات للطرق

الفئات يمكن أن ترث فئة مجردة واحدة فقط

الفئات يمكن أن تطبق عدة واجهات

يمكنها احتواء خصائص ومنطق تنفيذ

لا يمكنها احتواء خصائص أو منطق تنفيذ



أمثلة 

نظام إدارة الدفع


<?php

interface PaymentGateway {

    public function processPayment($amount);

}


abstract class OnlinePayment implements PaymentGateway {

    protected $gatewayName;


    public function __construct($gatewayName) {

        $this->gatewayName = $gatewayName;

    }


    public function getGatewayName() {

        return $this->gatewayName;

    }

}


class PayPal extends OnlinePayment {

    public function processPayment($amount) {

        echo "Processing $" . $amount . " payment through " . $this->gatewayName;

    }

}


class Stripe extends OnlinePayment {

    public function processPayment($amount) {

        echo "Processing $" . $amount . " payment through " . $this->gatewayName;

    }

}


$paypal = new PayPal("PayPal");

$paypal->processPayment(100); // Processing $100 payment through PayPal


$stripe = new Stripe("Stripe");

$stripe->processPayment(200); // Processing $200 payment through Stripe

?>






المراجع:


اسم المرجع

الرابط

w3schools

w3schools

geeksforgeeks

geeksforgeeks

engineer

engineer

delftstack

delftstack






Interfaces & Abstract in PHP Interfaces & Abstract in PHP بواسطة Remocolla Academy في يناير 24, 2026 تقييم: 5

ليست هناك تعليقات:

يتم التشغيل بواسطة Blogger.