Stats

2667 Contributors: 57 Tuesday, August 1, 2017
Licensed under: CC-BY-SA
Not affiliated with Stack Overflow
Rip Tutorial: riptutorial@gmail.com
Roadmap: roadmap

Classes and Objects

Introduction

Classes and Objects are used to to make your code more efficient and less repetitive by grouping similar tasks.

A class is used to define the actions and data structure used to build objects. The objects are then built using this predefined structure.

Syntax

  • class <ClassName> [ extends <ParentClassName> ] [ implements <Interface1> [, <Interface2>, ... ] { } // Class declaration
  • interface <InterfaceName> [ extends <ParentInterface1> [, <ParentInterface2>, ...] ] { } // Interface declaration
  • use <Trait1> [, <Trait2>, ...]; // Use traits
  • [ public | protected | private ] [ static ] $<varName>; // Attribute declaration
  • const <CONST_NAME>; // Constant declaration
  • [ public | protected | private ] [ static ] function <methodName>([args...]) { } // Method declaration

Remarks

Classes and Interface components

Classes may have properties, constants and methods.

  • Properties hold variables in the scope of the object. They may be initialized on declaration, but only if they contain a primitive value.
  • Constants must be initialized on declaration and can only contain a primitive value. Constant values are fixed at compile time and may not be assigned at run time.
  • Methods must have a body, even an empty one, unless the method is declared abstract.
class Foo {
    private $foo = 'foo'; // OK
    private $baz = array(); // OK
    private $bar = new Bar(); // Error!
}

Interfaces cannot have properties, but may have constants and methods.

  • Interface constants must be initialized on declaration and can only contain a primitive value. Constant values are fixed at compile time and may not be assigned at run time.
  • Interface methods have no body.
interface FooBar {
    const FOO_VALUE = 'bla';
    public function doAnything();
}

Related Examples