The abstract classes and methods are used to create a model of minimum required methods which must be defined in normal sub-classes derived from an abstract class (with extends).
An abstract class is created with the abstract keyword.
An abstract class cannot be instantiated, can only be inherited by other sub-classes extended from it.


The abstract methods are declared with the abstract keyword, and cannot have an implementation, they simply declare the method's signature.
abstract public function methodName($arguments);
Abstract methods are only created in an abstract class.

  - Example:
In this example is created an abstract class with a property ($name), an abstract method ( greetName() ) and a normal method ( setName() ).
<?php
// AbstractClass class
abstract class AbstractClass {
  protected $name;

  // declare an abstract method
  abstract public function greetName($greet);

  // define a normal method
  public function setName($name) {
    $this->name = $name;        // sets the value of $name property
  }
}
?>
Any attempt to create an object instance of the AbstractClass will cause an error like this:
Fatal error: Cannot instantiate abstract class AbstractClass in ...
As you can see in the example above, the abstract method, greetName() does not have an implementation code, but, by declarating this method abstract, you ensure that it must be defined by all child class derived from AbstractClass.
The abstract methods declared in the parent class must be defined in the child classes with the same (or a less restricted) attribute of access, and the same number of arguments.

In the next example we create a child class derived from AbstractClass. This subclass must contain the greetName() method becouse it is marked abstract in the parent class.
<?php
// ... include AbstractClass code

// a child class derived from AbstractClass
class ChildClas extends AbstractClass {
  // the required method
  public function greetName($greet) {
    return $greet. ' '. $this->name;
  }

  // another method, returns today's date
  public function todayDate() {
    return 'Today: '. date('l, j-n-Y');
  }
}
?>
If we were to create a child class derived from AbstractClass that does not implement the greetName() method, will generate an error like this:
Fatal error: Class ChildClas contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (AbstractClass::greetName) in ...

Child classes and their instances can uses the public and protected elements created in the abstract parent class.
For example:
<?php
// ... include ChildClas code

// object instance of ChildClas
$obj = new AbstractClass();

// calls setName(), defined in AbstractClass
$obj->setName('MarPlo');

// access the methods defined in ChildClas class
echo $obj->greetName('Welcome');
echo '<br />'. $obj->todayDate();
?>
Will display:
Welcome MarPlo
Today: Saturday, 2-4-2011

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag is used to add definition lists into a <dl> element?
<dt> <dd> <li>
<dl>
 <dt>HTML</dt>
  <dd> - Hyper Text Markup Language</dd>
  <dd> - Language for web pages</dd>
</dl>
Which CSS property can hide an element on page, letting an empty space in its place?
display position visibility
#id {
  visibility: hidden;
}
Click on the event which is triggered when the mouse clicks on an object.
onclick onmouseover onfocus
document.getElementById("id").onclick = function(){
  alert("http://CoursesWeb.net/");
}
Indicate the PHP variable that contains the contents of both $_GET, $_POST, and $_COOKIE arrays.
$_SESSION $_GET $_REQUEST
if(isset($_REQUEST["id"])) {
  echo $_REQUEST["id"];
}
PHP OOP - Abstract classes

Last accessed pages

  1. Adding text with ActionScript 3 (3474)
  2. Script Users Register, Login, Online (16203)
  3. Get Attribute (ID, Class, Name, Title, Src) with jQuery (52460)
  4. Sending data with GET and POST in the same request (3603)
  5. Node.js Move and Copy file (3518)

Popular pages this month

  1. Read Excel file data in PHP - PhpExcelReader (448)
  2. PhpSpreadsheet - Read, Write Excel and LibreOffice Calc files (352)
  3. Register and show online users and visitors (321)
  4. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (302)
  5. Insert, Select and Update NULL value in MySQL (214)