W3docs

php · PHP basics

What does the 'final' keyword do when applied to a class method in PHP?

Answers

  • Makes the method static
  • Prevents the method from being overridden in child classes
  • Makes the method abstract
  • Indicates the method is the last in the class
# Understanding the 'final' Keyword in PHP The 'final' keyword in PHP is an access modifier that is applied to a method within a class, preventing it from being overridden in child classes. This is particularly useful in object oriented programming where you want to ensure the behavior of a specific method remains consistent, regardless of any changes or additions to subclasses. Consider this simple example where we have a parent class `Vehicle` and a child class `Car`: ```php class Vehicle { final public function fuelType() { return "Diesel"; } } class Car extends Vehicle { public function fuelType() { return "Petrol"; } } ``` In the above example, PHP would throw an error. Why? Because we've tried to override the `fuelType()` function in the `Car` class that extends `Vehicle`. But in the `Vehicle` class, we've already declared this method as `final`, which means it cannot be overridden in a child class. This might be useful, for example, when a parent class represents a general category (like a vehicle), and you want to ensure that certain characteristics (e.g., fuel type) remain consistent across all subclasses (cars, trucks, motorcycles, etc.). However, it's important to note that the 'final' keyword should be used judiciously. Frequently marking methods as 'final' can restrict the flexibility of your code, especially when dealing with large codebases or multiple developers. As a best practice, before making a method 'final', carefully consider whether there is a valid reason to prevent that method from being overridden. Also, make sure you clearly document any methods that are marked as 'final', so other developers understand why that decision was made. In conclusion, the 'final' keyword provides a way to protect the integrity of a method in PHP by preventing it from being changed or overridden in child classes. Use it wisely, and it can be a powerful tool in your PHP programming arsenal!