Bird
Raised Fist0
PHPprogramming~5 mins

Readonly classes in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a readonly class in PHP?
A readonly class in PHP is a class where all properties are automatically readonly, meaning their values can only be set once, typically during object construction, and cannot be changed afterwards.
Click to reveal answer
beginner
How do you declare a readonly class in PHP?
You declare a readonly class by adding the <code>readonly</code> keyword before the <code>class</code> keyword, like this: <code>readonly class MyClass {}</code>.
Click to reveal answer
beginner
Can you modify properties of a readonly class after the object is created?
No, properties of a readonly class cannot be modified after the object is created. They are set once during construction and then become immutable.
Click to reveal answer
intermediate
What happens if you try to change a property of a readonly class after construction?
PHP will throw an Error if you try to modify a property of a readonly class after the object has been constructed, enforcing immutability.
Click to reveal answer
intermediate
Why use readonly classes in PHP?
Readonly classes help create immutable objects, which can make code safer and easier to understand by preventing accidental changes to object state after creation.
Click to reveal answer
How do you declare a readonly class in PHP?
Aclass readonly MyClass {}
Breadonly class MyClass {}
Cclass MyClass readonly {}
Dreadonly MyClass class {}
What happens if you try to change a property of a readonly class after construction?
AThe property changes successfully.
BThe property resets to default.
CThe property silently ignores the change.
DPHP throws an Error.
When are readonly properties set in a readonly class?
AOnly inside methods.
BAnytime after construction.
COnly during object construction.
DThey cannot be set at all.
What is a key benefit of using readonly classes?
AImproves code safety by making objects immutable.
BAllows properties to be changed anytime.
CMakes code run faster.
DEnables dynamic property creation.
Can a readonly class have non-readonly properties?
ANo, all properties are readonly automatically.
BOnly private properties can be writable.
COnly static properties can be writable.
DYes, some properties can be writable.
Explain what a readonly class is and how it affects object properties in PHP.
Think about how readonly classes make objects unchangeable after creation.
You got /4 concepts.
    Describe the benefits of using readonly classes in your PHP code.
    Consider why keeping object data fixed can help avoid bugs.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does a readonly class in PHP ensure about its properties?
      easy
      A. Properties are static and shared between all instances.
      B. Properties can be changed anytime after creation.
      C. All properties cannot be changed after the object is created.
      D. Properties are private and cannot be accessed outside the class.

      Solution

      1. Step 1: Understand the meaning of readonly class

        A readonly class means all its properties are readonly by default, so they cannot be changed after the object is created.
      2. Step 2: Compare options with this definition

        Only the option stating "All properties cannot be changed after the object is created." correctly states that properties cannot be changed after creation.
      3. Final Answer:

        All properties cannot be changed after the object is created. -> Option C
      4. Quick Check:

        Readonly class = immutable properties [OK]
      Hint: Readonly means no property changes after creation [OK]
      Common Mistakes:
      • Thinking readonly means private or static
      • Assuming properties can be changed anytime
      • Confusing readonly with access modifiers
      2. Which of the following is the correct syntax to declare a readonly class in PHP?
      easy
      A. readonly class User { public readonly string $name; }
      B. class readonly User {}
      C. class User readonly {}
      D. readonly class User {}

      Solution

      1. Step 1: Recall PHP readonly class syntax

        In PHP, the keyword readonly comes before class to declare a readonly class.
      2. Step 2: Check each option

        readonly class User {} correctly uses readonly class User {}. class readonly User {} reverses the order, class User readonly {} places readonly incorrectly, and readonly class User { public readonly string $name; } is invalid syntax.
      3. Final Answer:

        readonly class User {} -> Option D
      4. Quick Check:

        Keyword readonly before class [OK]
      Hint: Put readonly before class keyword [OK]
      Common Mistakes:
      • Placing readonly after class name
      • Using readonly as a property only
      • Mixing readonly with access modifiers
      3. What will be the output of this PHP code?
      readonly class Point {
          public int $x;
          public int $y;
          public function __construct(int $x, int $y) {
              $this->x = $x;
              $this->y = $y;
          }
      }
      
      $p = new Point(5, 10);
      echo $p->x . ', ' . $p->y;
      
      medium
      A. 5, 10
      B. Error: Cannot modify readonly property
      C. 0, 0
      D. 5 10

      Solution

      1. Step 1: Understand readonly class property initialization

        Readonly properties can be set inside the constructor. Here, $x and $y are set to 5 and 10 respectively.
      2. Step 2: Check output of echo statement

        The echo prints 5, 10 as expected because the properties were initialized correctly and not modified later.
      3. Final Answer:

        5, 10 -> Option A
      4. Quick Check:

        Readonly properties set in constructor output values [OK]
      Hint: Readonly properties can be set in constructor only [OK]
      Common Mistakes:
      • Thinking readonly properties cannot be set at all
      • Expecting error on property access
      • Confusing output format with space instead of comma
      4. Identify the error in this PHP code using a readonly class:
      readonly class User {
          public string $name;
          public function __construct(string $name) {
              $this->name = $name;
          }
      }
      
      $user = new User('Alice');
      $user->name = 'Bob';
      medium
      A. Cannot assign to readonly property after construction
      B. Missing readonly keyword before property declaration
      C. Constructor must be static in readonly class
      D. No error, code runs fine

      Solution

      1. Step 1: Understand readonly property behavior

        In a readonly class, properties can only be assigned once during construction. Changing them later causes an error.
      2. Step 2: Analyze the code

        The code tries to change $user->name after construction, which is not allowed and causes an error.
      3. Final Answer:

        Cannot assign to readonly property after construction -> Option A
      4. Quick Check:

        Readonly properties are immutable after construction [OK]
      Hint: Readonly properties cannot be changed after constructor [OK]
      Common Mistakes:
      • Thinking readonly properties can be changed anytime
      • Confusing readonly class with readonly property keyword
      • Ignoring error on property reassignment
      5. Given this readonly class, which code snippet correctly creates an immutable user and tries to update the name without error?
      readonly class User {
          public string $name;
          public function __construct(string $name) {
              $this->name = $name;
          }
      }

      Choose the correct approach:
      hard
      A. $user = new User('Alice'); $user->name = 'Bob';
      B. $user = new User('Alice'); $newUser = new User('Bob');
      C. $user = new User('Alice'); $user->name = strtoupper($user->name);
      D. $user = new User('Alice'); unset($user->name);

      Solution

      1. Step 1: Understand immutability of readonly classes

        Readonly class properties cannot be changed after construction, so to 'change' data, create a new object with new values.
      2. Step 2: Evaluate each option

        $user = new User('Alice'); $user->name = 'Bob'; tries to change property directly - error. $user = new User('Alice'); $user->name = strtoupper($user->name); tries to modify property - error. $user = new User('Alice'); $newUser = new User('Bob'); creates a new User object with new name - correct. $user = new User('Alice'); unset($user->name); tries to unset property - invalid.
      3. Final Answer:

        Create a new User object with updated name -> Option B
      4. Quick Check:

        Immutable means create new object for changes [OK]
      Hint: Change readonly data by creating new object [OK]
      Common Mistakes:
      • Trying to modify readonly property directly
      • Using unset on readonly properties
      • Assuming readonly means properties can be changed
      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