abstract)An abstract class is a parent class marked with the abstract keyword that cannot be instantiated directly. It serves as a structural template that forces derived child subclasses to implement declared abstract methods.
flowchart TD
A["abstract class PaymentProcessor"] -->|Declares abstract method| B["abstract public function processPayment()"]
A --> C["Concrete Subclass 1 (StripeProcessor)"]
A --> D["Concrete Subclass 2 (PayPalProcessor)"]
C --> C1["Implements processPayment()"]
D --> D1["Implements processPayment()"]
new.{}).<?php
declare(strict_types=1);
// Abstract Base Class Template
abstract class DatabaseDriver
{
// Concrete property & method available to all subclasses
public function __construct(protected string $connectionString) {}
public function logConnection(): void
{
echo "Connecting to driver: {$this->connectionString}
";
}
// Abstract method signature (Must be implemented by child classes)
abstract public function connect(): bool;
abstract public function query(string $sql): array;
}
class MySQLDriver extends DatabaseDriver
{
public function connect(): bool
{
$this->logConnection();
return true; // Mock connection
}
public function query(string $sql): array
{
return [["id" => 1, "result" => "MySQL Query Executed"]];
}
}
$db = new MySQLDriver("mysql:host=localhost;dbname=test");
$db->connect();
print_r($db->query("SELECT * FROM users"));
new AbstractClass() causes a fatal runtime error.Can an abstract class be instantiated directly using the new keyword? (No!)
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.