Bird
Raised Fist0
PHPprogramming~5 mins

Singleton pattern in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the Singleton pattern?
The Singleton pattern ensures a class has only one instance and provides a global point of access to it.
Click to reveal answer
beginner
How do you prevent creating multiple instances in a Singleton class in PHP?
By making the constructor private or protected, so no other code can create new instances directly.
Click to reveal answer
beginner
What is the purpose of the static method in a Singleton class?
It returns the single instance of the class, creating it if it does not exist yet.
Click to reveal answer
beginner
Why is the Singleton pattern useful in real life?
It is useful when you need only one shared resource, like a database connection, to avoid conflicts and save resources.
Click to reveal answer
intermediate
Show a simple PHP Singleton class structure.
class Singleton {
  private static ?Singleton $instance = null;
  private function __construct() {}
  public static function getInstance(): Singleton {
    return self::$instance ??= new Singleton();
  }
}
Click to reveal answer
What keyword is used to prevent creating new instances from outside a Singleton class in PHP?
Apublic
Bprivate
Cstatic
Dfinal
Which method typically returns the single instance in a Singleton pattern?
AgetInstance()
Bcreate()
CnewInstance()
Dinit()
Why should the Singleton instance be stored in a static property?
ASo it is shared across all calls and not recreated
BTo allow multiple instances
CTo make it private
DTo make the class abstract
Which of these is a common use case for Singleton pattern?
ALoop counter
BTemporary variable
CDatabase connection
DUser input form
What happens if the Singleton constructor is public?
AThe class becomes abstract
BOnly one instance is created
CThe static method fails
DMultiple instances can be created
Explain how the Singleton pattern controls instance creation in PHP.
Think about how the class hides its constructor and uses a static method to give access.
You got /4 concepts.
    Describe a real-world scenario where using a Singleton pattern is helpful.
    Consider something that should only have one version running at a time.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Singleton pattern in PHP?
      easy
      A. To ensure only one instance of a class is created
      B. To allow multiple instances of a class
      C. To inherit properties from multiple classes
      D. To create objects without a constructor

      Solution

      1. Step 1: Understand Singleton pattern goal

        The Singleton pattern is designed to restrict a class to a single instance.
      2. Step 2: Compare options with Singleton purpose

        Only To ensure only one instance of a class is created correctly states this purpose; others describe different concepts.
      3. Final Answer:

        To ensure only one instance of a class is created -> Option A
      4. Quick Check:

        Singleton = single instance only [OK]
      Hint: Singleton means one and only one instance [OK]
      Common Mistakes:
      • Thinking Singleton allows multiple instances
      • Confusing Singleton with inheritance
      • Believing Singleton removes constructors
      2. Which of the following is the correct way to declare the static instance variable in a Singleton class in PHP?
      easy
      A. public static $instance;
      B. private static $instance;
      C. protected $instance;
      D. static $instance;

      Solution

      1. Step 1: Identify visibility for Singleton instance

        The instance variable must be private static to restrict access and keep one shared instance.
      2. Step 2: Check options for correct syntax and visibility

        private static $instance; uses private static, which is correct. Others either lack visibility or static keyword.
      3. Final Answer:

        private static $instance; -> Option B
      4. Quick Check:

        Singleton instance is private static [OK]
      Hint: Singleton instance must be private and static [OK]
      Common Mistakes:
      • Using public instead of private
      • Omitting static keyword
      • Using protected instead of private
      3. What will be the output of the following PHP code?
      class Singleton {
          private static ?Singleton $instance = null;
          public int $value;
          private function __construct() { $this->value = 10; }
          public static function getInstance(): Singleton {
              if (self::$instance === null) {
                  self::$instance = new Singleton();
              }
              return self::$instance;
          }
      }
      
      $obj1 = Singleton::getInstance();
      $obj2 = Singleton::getInstance();
      $obj2->value = 20;
      echo $obj1->value;
      medium
      A. 10
      B. null
      C. 20
      D. Error

      Solution

      1. Step 1: Understand Singleton instance sharing

        Both $obj1 and $obj2 refer to the same Singleton instance.
      2. Step 2: Trace value changes

        Changing $obj2->value to 20 affects $obj1->value because they are the same object.
      3. Final Answer:

        20 -> Option C
      4. Quick Check:

        Singleton shares one object, so value = 20 [OK]
      Hint: Singleton returns same object, changes reflect everywhere [OK]
      Common Mistakes:
      • Assuming separate objects for each getInstance call
      • Expecting original value 10 after change
      • Thinking code causes error
      4. Identify the error in this Singleton implementation:
      class Singleton {
          private static $instance;
          private function __construct() {}
          public static function getInstance() {
              if (!isset(self::$instance)) {
                  return new Singleton();
              }
              return self::$instance;
          }
      }
      medium
      A. No error, code is correct
      B. Constructor should be public
      C. Static variable should be public
      D. getInstance() does not assign the new object to static instance

      Solution

      1. Step 1: Check getInstance method logic

        The method creates a new Singleton but does not save it to self::$instance.
      2. Step 2: Identify missing assignment

        Without assigning, every call returns a new object, breaking Singleton pattern.
      3. Final Answer:

        getInstance() does not assign the new object to static instance -> Option D
      4. Quick Check:

        Missing assignment breaks Singleton [OK]
      Hint: Always assign new instance to static variable in getInstance [OK]
      Common Mistakes:
      • Making constructor public
      • Not assigning instance in getInstance
      • Changing static variable visibility incorrectly
      5. You want to extend a Singleton class in PHP but ensure the child class also follows Singleton rules independently. Which approach is best?
      hard
      A. Use separate static instance variables in parent and child classes
      B. Share the parent's static instance variable in the child class
      C. Make constructor public in child class
      D. Avoid inheritance and duplicate Singleton code

      Solution

      1. Step 1: Understand Singleton inheritance challenge

        Parent and child classes must maintain separate single instances to avoid conflicts.
      2. Step 2: Use separate static variables

        Each class having its own static instance variable ensures independent Singleton behavior.
      3. Final Answer:

        Use separate static instance variables in parent and child classes -> Option A
      4. Quick Check:

        Separate static instances keep Singleton independent [OK]
      Hint: Each class needs its own static instance variable [OK]
      Common Mistakes:
      • Sharing static instance causes one instance for both classes
      • Making constructor public breaks Singleton
      • Avoiding inheritance unnecessarily
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard