In this article, we will cover the following topics:

  • Defining Classes and Creating Objects
  • Properties and Methods
  • Inheritance
  • Access Modifiers
  • Interfaces and Traits

Defining Classes and Creating Objects

In PHP, a class is a blueprint for creating objects. It can contain properties (variables) and methods (functions) that define the behavior of the objects created from the class.

Example: Creating a Simple Class

class Car {
    // Properties
    public $color;
    public $model;

    // Constructor
    public function __construct($color, $model) {
        $this->color = $color;
        $this->model = $model;
    }

    // Method
    public function getDetails() {
        return "This car is a {$this->color} {$this->model}.";
    }
}

// Creating an object
$myCar = new Car("red", "Toyota");
echo $myCar->getDetails(); // Output: This car is a red Toyota.

In this example, we define a Car class with two properties: $color and $model. The constructor initializes these properties when a new object is created. The getDetails method returns a string describing the car.

Properties and Methods

Properties are variables that belong to a class, while methods are functions that define the behavior of the class. Properties can have different access modifiers, which control their visibility.

Example: Properties and Methods

class Person {
    private $name;
    private $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function introduce() {
        return "Hello, my name is {$this->name} and I am {$this->age} years old.";
    }

    // Getter for name
    public function getName() {
        return $this->name;
    }
}

// Creating an object
$person = new Person("Alice", 30);
echo $person->introduce(); // Output: Hello, my name is Alice and I am 30 years old.

In this code, we have a Person class with private properties $name and $age. The introduce method provides a way to output a greeting. The getName method allows access to the private property $name.

Inheritance

Inheritance allows a class to inherit properties and methods from another class, promoting code reusability. The class that inherits is called the child class, while the class being inherited from is the parent class.

Example: Inheritance

class Vehicle {
    public $brand;

    public function __construct($brand) {
        $this->brand = $brand;
    }

    public function honk() {
        return "Beep!";
    }
}

class Bike extends Vehicle {
    public function ringBell() {
        return "Ring ring!";
    }
}

// Creating an object
$myBike = new Bike("Yamaha");
echo $myBike->honk(); // Output: Beep!
echo $myBike->ringBell(); // Output: Ring ring!

In this example, the Bike class extends the Vehicle class, inheriting its properties and methods. This allows the Bike class to use the honk method defined in the Vehicle class.

Access Modifiers

Access modifiers determine the visibility of class properties and methods. PHP supports three access modifiers: public, protected, and private.

ModifierDescriptionExample
publicAccessible from anywherepublic $property;
protectedAccessible within the class and its subclassesprotected $property;
privateAccessible only within the class itselfprivate $property;

Example: Access Modifiers

class Employee {
    public $name;
    protected $salary;
    private $ssn;

    public function __construct($name, $salary, $ssn) {
        $this->name = $name;
        $this->salary = $salary;
        $this->ssn = $ssn;
    }

    public function getInfo() {
        return "Name: {$this->name}, Salary: {$this->salary}";
    }
}

// Creating an object
$employee = new Employee("John", 50000, "123-45-6789");
echo $employee->getInfo(); // Output: Name: John, Salary: 50000

In this example, the Employee class has properties with different access modifiers. The getInfo method can access the public and protected properties, but not the private $ssn.

Interfaces and Traits

Interfaces define a contract that classes must follow, while traits allow code reuse across multiple classes without inheritance.

Example: Interface

interface VehicleInterface {
    public function start();
}

class Car implements VehicleInterface {
    public function start() {
        return "Car started.";
    }
}

// Creating an object
$myCar = new Car();
echo $myCar->start(); // Output: Car started.

In this example, the VehicleInterface defines a method start, and the Car class implements this interface, providing its own version of the start method.

Example: Trait

trait Logger {
    public function log($message) {
        echo "[LOG]: $message";
    }
}

class Application {
    use Logger;

    public function run() {
        $this->log("Application is running.");
    }
}

// Creating an object
$app = new Application();
$app->run(); // Output: [LOG]: Application is running.

In this example, the Logger trait provides a log method that can be used in the Application class.

Conclusion

Understanding classes, objects, inheritance, access modifiers, interfaces, and traits in PHP is crucial for leveraging the power of object-oriented programming. By using these concepts, you can create more organized, reusable, and maintainable code, which is essential for large-scale applications.

Learn more with useful resources: