‎‎رابط هاPHP OOP -‎ Interfaces

Previous >    <Next  

‎رابط ها اين امكان را ميدهند، كه مشخص كنيديك كلاس بايد چه متدهائي از رابط را پيدا سازي كند ‎رابط ها استفاده از انواع كلاسهاي مختلف را به روش مشابه،آسان ميكنند.هنگاميكه يك يا چند كلاس ‎از يك رابط استفاده ميكنند به آن چند شكلي(polymorphism) ‎ميگويند.

‎‎رابط ها با كلمه كليدي‎interface‎ تعريف ميشوند .فرم كلي تعريف مطابق زير است .

‎‎فرم كلي تعريف رابط

<?php 
interface InterfaceName {
  public function someMethod1();
  public function someMethod2($name, $color);
  public function someMethod3() : string;
}
?> 

‎‎رابط ها وكلاس انتزاعي

‎‎يك رابطه با تفاوتهائي، مشابه يك كلاس انتزاعي است .تفاوت آنان مطابق زيراست:

‎‎ 1‎ـ رابط نميتواند داراي ويژگي باشد، در صورتيكه كلاس انتزاعي ميتواند داراي ويژگي باشد.

‎ 2‎ـ متد رابط بايد بصورتpublic باشد، در صورتيكه از انتزاعي ميتواندpublic يا protected ‎باشد.

‎ 3‎ـ متدها در رابط همه انتزاعي(abstract) ‎هستند ونميتوانند پياده سازي شوند.در آنها نياز ‎‎به ذكر كلمه كليديabstract نمي باشد.

‎‎ 4‎ـ كلاسها ميتوانند رابط ها را پياده سازي كنند، در ضمن اينكه همزمان وارث كلاس ديگريند.

‎‎استفاده از رابطPHP -‎ Using interfaces

‎براي پياده سازي يك رابط دريك كلاس از كلمه كليدي‎implement‎ استفاده ميشود . ‎كلاسي كه ‎‎ميخواهد از رابط استفاده نمايد، بايد تمام متدهاي رابط را پياده سازي نمايد.

‎‎مثال-‎

 <?php 
interface Animal {
  public function makeSound();
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow";
  }
}

$animal = new Cat();
$animal->makeSound();
?> 

--(go to editor for change code and run)

‎باتوجه بمثال بالا، فرض كنيد كه ميخواهيم نرم افزاري بنويسيم كه گروهي از حيوانات را مديريت ‎كند .اعمالي وجود داردكه همه حيوانات مي توانند انجام دهند، اماهر حيواني آنرا بروش خود انجام ‎ميدهد.

‎با استفاده از رابط ها، مي توانيم كدي بنويسيم كه ميتواند براي همه حيوانات كار كند، حتي اگر ‎هر حيوان متفاوت رفتار كند.

‎‎مثال ـ مثال زير در مورد نوع صداي حيوانات

<?php 
// Interface definition
interface Animal {
  public function makeSound();
}

// Class definitions
class Cat implements Animal {
  public function makeSound() {
    echo " Meow ";
  }
}

class Dog implements Animal {
  public function makeSound() {
    echo " Bark ";
  }
}

class Mouse implements Animal {
  public function makeSound() {
    echo " Squeak ";
  }
}
// Create a list of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);

// Tell the animals to make a sound
foreach($animals as $animal) {
  $animal->makeSound();
}
?> 

--(go to editor for change code and run)

‎مثال ـ در مثال زير براي هركدام از اشياء تعريف شده در مثال بالا يك ويژگيname تعريف ومقدار ‎دهي شده است، از آن براي نمايش بهتر نوع صداي حيوان ، نام حيوان هم مشخص شده است.

<?php 
// Interface definition
interface Animal {
  public function makeSound();
}

// Class definitions
class Cat implements Animal {
  public function makeSound() {
    echo "<br>".$this->name."= Meow ";
  }
}

class Dog implements Animal {
  public function makeSound() {
    echo "<br>".$this->name."= Bark ";
  }
}

class Mouse implements Animal {
  public function makeSound() {
    echo "<br>".$this->name."= Squeak ";
  }
}
// Create a list of animals
$cat = new Cat();
$cat->name="cat";
$dog = new Dog();
$dog->name="dog";
$mouse = new Mouse();
$mouse->name="mouse";
$animals = array($cat, $dog, $mouse);

// Tell the animals to make a sound
foreach($animals as $animal) {
  $animal->makeSound();
}
?> 

--(go to editor for change code and run)


Previous >    <Next