# Weakref::acquire

(PECL weakref >= 0.1.0)

Weakref::acquire — Acquires a strong reference on that object

### Description

public Weakref::acquire ( void ) : bool

Acquires a strong reference on that object, virtually turning the weak reference into a strong one.

The Weakref instance maintains an internal acquired counter to track outstanding strong references. If the call to Weakref::acquire() is successful, this counter will be incremented by one.

### Parameters

This function has no parameters.

### Return Values

Returns `TRUE` if the reference was valid and could be turned into a strong reference, `FALSE` otherwise.

### Examples

Example #1 Weakref::acquire() example

`<?php
class MyClass {
public function __destruct() {
echo "Destroying object!\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
$r1->acquire();
echo "Unsetting o1...\n";
unset($o1);
$o2 = $r1->get();
$r1->release();
echo "Unsetting o2...\n";
unset($o2);
?>`

The above example will output:

    Unsetting o1...
    Unsetting o2...
    Destroying object!

Example #2 Nested acquire/release example

`<?php
class MyClass {
public function __destruct() {
echo "Destroying object!\n";
}
}
$o1 = new MyClass;
$r1 = new Weakref($o1);
echo "Acquiring...\n";
$r1->acquire();
echo " Unsetting...\n";
unset($o1);
echo " Acquiring...\n";
$r1->acquire();
echo " Acquiring...\n";
$r1->acquire();
echo " Releasing...\n";
$r1->release();
echo " Releasing...\n";
$r1->release();
echo "Releasing...\n";
$r1->release();
?>`

The above example will output:

    Acquiring...
      Unsetting...
      Acquiring...
        Acquiring...
        Releasing...
      Releasing...
    Releasing...
    Destroying object!

### See Also

- Weakref::release() - Releases a previously acquired reference