📖 Scenario: Imagine you are creating a simple system to count how many users have registered on a website. You want to keep track of the total number of users without creating a new counter for each user.
🎯 Goal: Build a PHP class with a static property to count users and a static method to display the total count.
📋 What You'll Learn
Create a class called User.
Add a static property called count initialized to 0.
Add a static method called incrementCount that increases count by 1.
Add a static method called getCount that returns the current value of count.
Call the static methods to simulate user registrations and display the total count.
💡 Why This Matters
🌍 Real World
Static properties and methods are used to keep track of information that applies to all objects of a class, like counting users, managing configuration, or caching data.
💼 Career
Understanding static members is important for backend development, especially when working with shared resources or global counters in PHP applications.
Progress0 / 4 steps
1
Create the User class with a static property
Create a class called User with a static property named count set to 0.
PHP
Hint
Use public static to declare the static property inside the class.
2
Add static methods to update and get the count
Inside the User class, add a static method called incrementCount that increases count by 1, and another static method called getCount that returns the value of count.
PHP
Hint
Use self::$count to access the static property inside static methods.
3
Simulate user registrations by calling the static method
Outside the User class, call the static method incrementCount three times to simulate three user registrations.
PHP
Hint
Call the static method using User::incrementCount();.
4
Display the total number of users
Use print to display the text 'Total users: ' followed by the result of calling the static method getCount from the User class.
PHP
Hint
Use print("Total users: " . User::getCount()); to show the count.
Practice
(1/5)
1. Which statement about static properties in PHP is true? class Example { public static $count = 0; }
easy
A. Static properties belong to the class itself, not to any object instance.
B. Static properties can only be accessed through object instances.
C. Static properties cannot hold values.
D. Static properties are private by default.
Solution
Step 1: Understand static property ownership
Static properties belong to the class, not to individual objects.
Step 2: Check access rules
Static properties are accessed using the class name, not object instances.
Final Answer:
Static properties belong to the class itself, not to any object instance. -> Option A
Quick Check:
Static property = class-level data [OK]
Hint: Static means class-level, not per object [OK]
Common Mistakes:
Thinking static properties belong to objects
Trying to access static properties via objects
Assuming static properties can't hold values
2. Which of the following is the correct syntax to call a static method show() of class Test?
easy
A. $obj->show();
B. $obj::show();
C. Test->show();
D. Test::show();
Solution
Step 1: Recall static method call syntax
Static methods are called using the class name and double colon (::).
Step 2: Check each option
Test::show(); uses Test::show(); which is correct syntax.
Final Answer:
Test::show(); -> Option D
Quick Check:
Static method call = ClassName::method() [OK]
Hint: Use ClassName::method() to call static methods [OK]
Common Mistakes:
Using object arrow (->) to call static methods
Using object variable with :: operator incorrectly
Using class arrow (->) which is invalid
3. What will be the output of the following PHP code?
class Counter {
public static $count = 0;
public static function increment() {
self::$count++;
}
}
Counter::increment();
Counter::increment();
echo Counter::$count;
medium
A. 1
B. 2
C. 0
D. Error
Solution
Step 1: Understand static property and method behavior
Static property $count starts at 0 and is shared by the class.
Step 2: Trace method calls
Each call to increment() increases $count by 1. Two calls increase it to 2.
Final Answer:
2 -> Option B
Quick Check:
2 increments = 2 count [OK]
Hint: Static property keeps value across calls [OK]
Common Mistakes:
Thinking static resets per call
Confusing self:: with $this->
Expecting error due to static usage
4. Identify the error in this PHP code snippet:
class Sample {
public static $value = 10;
public function show() {
echo self->$value;
}
}
$object = new Sample();
$object->show();
medium
A. Cannot use echo inside class methods.
B. Static property cannot be accessed inside non-static methods.
C. Using self::$value instead of self->$value inside the method.
D. Missing static keyword before method declaration.
Solution
Step 1: Check static property access syntax
Static properties must be accessed with self::$propertyName, not self->$propertyName.
Step 2: Verify method and property usage
The method is non-static but can access static properties using self:: syntax.
Final Answer:
Using self::$value instead of self->$value inside the method. -> Option C
Quick Check:
Static property access = self::$property [OK]
Hint: Use :: for static properties, not -> or $ [OK]
Common Mistakes:
Using $ before property name with self::
Trying to access static property with $this->
Confusing static and non-static method rules
5. You want to count how many objects of class User have been created using a static property. Which code correctly implements this?
class User {
public static $count = 0;
public function __construct() {
// What goes here?
}
}
hard
A. self::$count++;
B. $this->count++;
C. User->count++;
D. static->count++;
Solution
Step 1: Understand static property increment in constructor
Each time an object is created, the constructor runs and should increase the static count.
Step 2: Use correct syntax to increment static property
Use self::$count++; inside the constructor to increment the static property.
Final Answer:
self::$count++; -> Option A
Quick Check:
Increment static with self::$property++ [OK]
Hint: Use self::$property to access static inside class [OK]
Common Mistakes:
Using $this->count++ which accesses instance property
Using arrow (->) with class name or static keyword
Trying to increment static property without self::
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.