Returns the still-live referenced object, or null after it has been collected.
The examples focus on the operation itself, including the important distinction: create establishes the weak reference.
What It Does
Use the examples below to observe the behavior on a small dataset before extending it to application code.
Syntax and Return Value
WeakReference::get(): ?object
The displayed signature describes the API or identifies any correction or optional dependency. When a parameter is optional, supply it only when the task requires it.
Declared return type: ?object. Read the behavior notes for important cases such as empty collections and destructive iteration.
Example 1: Basic Use
A weak reference does not own the object; the second example releases the only strong reference explicitly.
<?php
$resource = new stdClass();
$resource->name = 'draft';
$ref = WeakReference::create($resource);
unset($resource);
gc_collect_cycles();
echo $ref->get() === null ? "collected" : "still alive";
Output from a successful local PHP 8.4 run:
collected
Example 2: Checking Behavior
A weak reference does not own the object; the second example releases the only strong reference explicitly.
<?php
$resource = new stdClass();
$resource->name = 'receipt';
$ref = WeakReference::create($resource);
unset($resource);
gc_collect_cycles();
echo $ref->get() === null ? "collected" : "still alive";
Output from a successful local PHP 8.4 run:
collected
Example 3: Practical Example
A weak reference does not own the object; the second example releases the only strong reference explicitly.
<?php
$resource = new stdClass();
$resource->name = 'cache';
$ref = WeakReference::create($resource);
unset($resource);
gc_collect_cycles();
echo $ref->get() === null ? "collected" : "still alive";
Output from a successful local PHP 8.4 run:
collected
Important Behavior and Edge Cases
Never assume get returns an object; guard for null.
Comparison with Related Approaches
| Approach | Difference |
|---|---|
| WeakReference::get | Returns the still-live referenced object, or null after it has been collected. |
| Related API or alternative | create establishes the weak reference. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Ignoring the operation-specific limits | Never assume get returns an object; guard for null. |
| Confusing it with a related API | create establishes the weak reference. |
Key Takeaways
- Returns the still-live referenced object, or null after it has been collected.
- Never assume get returns an object; guard for null.
- create establishes the weak reference.
Use WeakReference::get when its documented behavior matches the problem. Test the relevant edge cases in your own runtime before deploying it.