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):
<?php
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.
<?php
// class that implements ITest interface
class WebDevelopment implements ITest {
  // protected property
  protected $site = 'coursesweb.net';

  // 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:
<?php
class Languages implements ITest {
  // protected property
  protected $adr = 'www.marplo.net/';

  // 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).
<?php
// 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
include('class.WebDevelopment.php');
include('class.Languages.php');

// 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
courses($web_development);
courses($limbi_straine);
?>
(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:
coursesweb.net
php-mysql - 4
Good way
4 - www.marplo.net/php-mysql

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag is used to add lists into <ul> and <ol> elements?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://coursesweb.net/css/</li>
</ul>
Which value of the "display" property creates a block box for the content and ads a bullet marker?
block list-item inline-block
.some_class {
  display: list-item;
}
Which instruction converts a JavaScript object into a JSON string.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicate the PHP class used to work with HTML and XML content in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
PHP OOP - Interfaces

Last accessed pages

  1. The Mastery of Love (1714)
  2. Snail Bob 5 Love Story (106)
  3. Adventure Games (4842)
  4. Car Ferry (174)
  5. Add Text in Canvas from Input text field, as it is Typed (4213)

Popular pages this month

  1. Qwop (7896)
  2. Drag Racer V3 (5542)
  3. Bubbles3 (2160)
  4. List with All the Games (1834)
  5. Flash Games - Free online Games (1719)