Interface is a special class used like a template for a group of classes with similar functions, which must define a certain structure of methods.
Synthesized, Interface is a class with a list of methods which must be created in classes where it is implemented.
An interface is declared with the interface keyword. It can contain constants and method declarations, but not method bodies.

  - Syntax:
interface InterfaceName {
  const CONSTANT_NAME = value;

  public function methodName1();
  public function methodName2();
All methods declared within an interface must be public, and must be defined in the classes in which it is applied, having the same number of parameters indicated in Interface.
  - Example (An Interface with two methods):
interface ITest {
  // List of methods
  public function Links();
  public function Tutorials($str, $nota);

Implementing interface

Once you have defined an Interface, you can create classes that implement its methods.
A class can implement an interface using the implements keyword in its declaration.
  - Syntax:
class ClassName implements InterfaceName {
  // Class body
The classes which implement an interface must define all methods declared in it, with public attribute and the same number of parameters. They may contain other methods, too.
  - Example:
In this example we create a class (named WebDevelopment) which implements the ITest interface declared above.
// class that implements ITest interface
class WebDevelopment implements ITest {
  // protected property
  protected $site = '';

  // method required by interface
  public function Links() {
    return $this->site;

  // method required by interface
  public function Tutorials($gen, $nota) {
    $re = $gen. ' - '. $nota;
    return $re;

  // additional method
  public function setSite($site) {
    $this->site = $site;
This class defines the two methods required by the ITest interface ( Links() and Tutorials() ), a protected property ($site) and an accesor method ( setSite() ), that set the value of $site.
If we create another class that implements the ITest interface, this second class should contain the Links() and Tutorials() methods, otherwise will result in an error.
So, the Interface is useful when you want to create multiple classes whith the same structure of methods.

Interface as data type

The Interface can also be used as a data type for the parameter of a function. Then, that function can use that parameter as an object instance of the classes which implement that interface.
To understand better let's see the following example.
We create another class (called Languages) that implements the ITest interface:
class Languages implements ITest {
  // protected property
  protected $adr = '';

  // method required by interface
  public function Links() {
      return'Good way';

  // method required by interface
  public function Tutorials($gen, $nr) {
    $re = $nr.' - '. $this->adr. $gen;
    return $re;
Now we create a script that includes and uses the ITest interface and the two classes (WebDevelopment and Languages).
// include the files with the code of the classes (if they are in external files): ITest, WebDevelopment and Languages
include('interf.ITest.php');             // The Interface

// function that accepts only arguments which are objects of the classes which implement ITest
function courses(ITest $obj) {
  // calls the methods declared in ITest interface
  echo '<br />'. $obj->Links();
  echo '<br />'. $obj->Tutorials('php-mysql', 4);

// creates the object instances
$web_development = new WebDevelopment();
$limbi_straine = new Languages();

// calls the courses() function, passing the objects for argument
(ITest $obj) makes the courses() function to accept only an argument that is an object of a class which implements ITest. Becouse we know that all these classes have defined the methods declared in the ITest interface ( Links() and Tutorials() ), we can call them within the function body.
When this function is called, it accesses these methods defined in the object passed for the $obj parameter.
- By using this technique, you don't need to create the same function for every object instance.
This example will output:
php-mysql - 4
Good way
4 -

Daily Test with Code Example

Which attribute is used in <a> tag for the address of the link?
src href rel
<a href="" title=""></a>
Which CSS property sets the type of the text font?
font-family text-decoration font-size
h2 {
What instruction selects all the <div> tags with class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")
var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length;       // number of selected items
Indicate the function that can be used to get the sum of values in an array.
array_sum() array_diff() array_shift()
$arr = array(1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum;       // 10
PHP OOP - Interfaces

Last accessed pages

  1. Select the Content of HTML Element (1807)
  2. Mahjong Gardens (4150)
  3. Escape Games (5820)
  4. SSEP - Site Search Engine PHP-Ajax (5098)
  5. Voting Poll System script PHP-AJAX (5183)

Popular pages this month

  1. Qwop (4763)
  2. Bubbles3 (4404)
  3. Butterfly Kyodai (3133)
  4. Zuma Deluxe (2904)
  5. Backgammon (1486)