Object oriented features in PHP are listed and described below:
- Visibility modifiers
- Static Members
- Abstract classes
- Final classes and methods
- Traits
- Interfaces
If you want to learn about OOP concepts, please visit: OOP Concepts
Class
- Blueprint for the object. In other words, a class defines the object type.
- class keyword is used to define a class.
- use singular nouns when defining class names.
- use one file per class definition and group all files in a relevant directory.
- a class contains CONSTANTS, variables (aka properties), and functions (aka methods).
Syntax:
class Product {
// class body
}
Class functions
- get_declared_classes(): Array – get all declared classes in an array.
- class_exists( $class_name ): bool – check if a class exists.
Object
- new keyword is used to create an object.
- You should always define class first and include it in the script before instantiating an object.
Syntax:
// define class or include the class file before the following code.
$product1 = new Product;
$product2 = new Product;
// $product1 and $product2 are different. i.e., each object is unique.
if( $product1 === $product2 ){
echo 'they are not unique';
} else {
echo 'they are unique';
}
Object functions
- get_class($object): bool – get the class name
- is_a( $object_or_class, $class): bool – checks if the object is instance of class $class (or class is the child of $class).
Defining class properties and methods
- Its always a good practice to use visibility specifiers for properties and methods. Default value is ‘public’.
- public: can be accessed from outside of the class
- protected: can not be accessed from outside the class. Can be inherited and overridden from inheriting class.
- private: can only be accessed from inside the class and can not be overridden from inheriting class.
Syntax:
class Product {
// visibility $variable_name = 'Default Value';
public $product_name = 'Dummy Product';
private $product_id = 1243;
protected $product_sku = 'DUMMYSKU01';
// visibility method_name( $args ){ /*body*/ }
public function set_product( $name, $description, $sku ){
$this->product_name = $name;
$this->product_desc = $description;
$this->product_sku = $sku;
}
}
Functions for properties and methods
- get_class_vars( $string )
- get_object_vars( $string )
- property_exists( $mixed, $string )
- get_class_methods( $mixed )
- method_exists( $mixed, $string )
Understanding $this
- $this always refers to current object.
- Its used inside a class definition to access member functions and variables using arrow notation.
class Product {
public $product_name = 'Dummy Product';
public function get_product_name(){
// notice the removal of '$' sign
return $this->product_name;
}
private function update_stock( $id, $quantity ){
// method body
// notice use of parenthesis
$this->get_product( $id ); // member function call
}
}
Reference: PHP OOP