Sling Academy
Home/PHP/Understanding the ‘this’ keyword in PHP classes: A detailed guide

Understanding the ‘this’ keyword in PHP classes: A detailed guide

Last updated: January 11, 2024

Introduction

Working with object-oriented programming (OOP) in PHP is vital for building scalable and maintainable web applications. A key concept within OOP in PHP is the this keyword, which can sometimes cause confusion for beginners and seasoned developers alike. This guide will provide a thorough understanding of the this keyword within the context of PHP classes.

The ‘this’ Keyword: A Deep Dive

The this keyword in PHP is a reference to the current object within a class. It is used to access properties and methods of the current object instance. This reference is only available within class methods, and it allows you to interact with other members of the same class.

Accessing Properties with ‘this’

Properties are variables that are defined within a class. They represent the state of an object. The this keyword is used to access these properties within class methods:

class Car {
  public $model;

  public function setModel($model) {
    $this->model = $model;
  }

  public function getModel() {
    return $this->model;
  }
}

$car = new Car();
$car->setModel('Tesla Model 3');

echo $car->getModel();  // Outputs: Tesla Model 3

Understanding ‘this’ Within Methods

Methods are functions that reside within a class. They define the behavior of an object. The this keyword provides a way to call one method from another within the same object:

class Person {
  public function getName() {
    return "John";
  }

  public function greet() {
    echo "Hello, " . $this->getName();
  }
}

$person = new Person();
$person->greet();  // Outputs: Hello, John

Why Use ‘this’ instead of the Object Name?

One might wonder why we need to use this instead of referring to the object by name. Consider the following:

class Book {
  public $title;

  public function setTitle($title) {
    $this->title = $title;
  }

  public function getTitle() {
    return $this->title;
  }
}

$book1 = new Book();
$book1->setTitle('PHP Handbook');

$book2 = new Book();
$book2->setTitle('JavaScript Guide');

// Now, if you wanted to refer to the object by name, you would have to write:
// $book1->title and $book2->title
// Whereas using $this->title handles it dynamically for the current instance, irrespective of the object's name.

‘this’ and $this->: Be Mindful of Syntax

Syntax is key when dealing with the this keyword in PHP. Note that it always comes with the `->` operator when used to access properties or methods. this by itself will cause a syntax error.

Inheritance and ‘this’

Inheritance allows classes to inherit properties and methods from another class. Even within inherited methods, this refers to the current instance of the child class:

class Vehicle {
  protected $brand;

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

class Car extends Vehicle {
  public function getBrand() {
    return $this->brand;
  }
}

$car = new Car();
$car->setBrand('Audi');

echo $car->getBrand();  // Outputs: Audi

Understanding ‘this’ in Different Contexts

How this behaves can change depending on the context in which it is used:

  • In non-static methods, this refers to the current instance of the class.
  • In static methods, this is not available, since static methods are not called on an instance of the class.

Static Context and Alternatives to ‘this’

When working with static methods and properties, instead of this, we use the self:: keyword along with the scope resolution operator :: to access static properties or methods within the class:

class Calculator {
  protected static $lastResult;

  public static function add($a, $b) {
    self::$lastResult = $a + $b;
    return self::$lastResult;
  }
}

Calculator::add(5, 10); // Calls static method without using $this

‘this’ and the Scope Resolution Operator

It’s important not to confuse this with the scope resolution operator ::, which is used for accessing static, constant, and overridden properties and methods in the parent class.

Conclusion

Mastering the use of the this keyword is critical for developing with PHP OOP. It allows you to write code that is not just functional but also clean and clear in intention. Understanding how this operates within different contexts of class methods will help you avoid common pitfalls and improve the structure and reliability of your PHP applications.

As with all programming skills, practice is essential. Try creating classes, methods, and properties on your own to explore the use of this in various scenarios. Soon, handling this will become second nature in your PHP development endeavors.

Next Article: How to Declare Constants in PHP Classes

Previous Article: Understanding PHP class constructors: A practical guide

Series: PHP Data Structure Tutorials

PHP

You May Also Like

  • Pandas DataFrame.value_counts() method: Explained with examples
  • Constructor Property Promotion in PHP: Tutorial & Examples
  • Understanding mixed types in PHP (5 examples)
  • Union Types in PHP: A practical guide (5 examples)
  • PHP: How to implement type checking in a function (PHP 8+)
  • Symfony + Doctrine: Implementing cursor-based pagination
  • Laravel + Eloquent: How to Group Data by Multiple Columns
  • PHP: How to convert CSV data to HTML tables
  • Using ‘never’ return type in PHP (PHP 8.1+)
  • Nullable (Optional) Types in PHP: A practical guide (5 examples)
  • Explore Attributes (Annotations) in Modern PHP (5 examples)
  • An introduction to WeakMap in PHP (6 examples)
  • Type Declarations for Class Properties in PHP (5 examples)
  • Static Return Type in PHP: Explained with examples
  • PHP: Using DocBlock comments to annotate variables
  • PHP: How to ping a server/website and get the response time
  • PHP: 3 Ways to Get City/Country from IP Address
  • PHP: How to find the mode(s) of an array (4 examples)
  • PHP: Calculate standard deviation & variance of an array