PHPackages                             iddqdby/weak-array - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. iddqdby/weak-array

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

iddqdby/weak-array
==================

Array of weak references.

v2.0.1(10y ago)1428MITPHPPHP ^5.5 || ^7.0

Since Mar 17Pushed 10y ago1 watchersCompare

[ Source](https://github.com/iddqdby/weak-array)[ Packagist](https://packagist.org/packages/iddqdby/weak-array)[ Docs](https://github.com/iddqdby/weak-array)[ RSS](/packages/iddqdby-weak-array/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (2)Versions (11)Used By (0)

WeakArray
=========

[](#weakarray)

[![Build Status](https://camo.githubusercontent.com/e8ca467de62c4f7ce6e901ffe5103d1b1739c66f05ffb90ba34f9574bbbc5345/68747470733a2f2f7472617669732d63692e6f72672f696464716462792f7765616b2d61727261792e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/iddqdby/weak-array)[![Latest Stable Version](https://camo.githubusercontent.com/ca48f66f7b5eae1ada38f970404ffa0fc60d24611136323200ad77b0a695a5a9/68747470733a2f2f706f7365722e707567782e6f72672f696464716462792f7765616b2d61727261792f762f737461626c65)](https://packagist.org/packages/iddqdby/weak-array)[![Total Downloads](https://camo.githubusercontent.com/464fcdb289109443447d5dc71dfab67619faeb8d4bbebae390853cfcf997760b/68747470733a2f2f706f7365722e707567782e6f72672f696464716462792f7765616b2d61727261792f646f776e6c6f616473)](https://packagist.org/packages/iddqdby/weak-array)[![License](https://camo.githubusercontent.com/784caf08c0d2c5e7588b1ad714c85ed4024cd572f43069781175b5f277e7eb76/68747470733a2f2f706f7365722e707567782e6f72672f696464716462792f7765616b2d61727261792f6c6963656e7365)](https://packagist.org/packages/iddqdby/weak-array)

Short description
-----------------

[](#short-description)

WeakArray is an array of weak references, based on WeakRef PHP extension (see ).

It keeps weak references to objects, allowing them to be garbage-collected when there are no other references present.

How to install
--------------

[](#how-to-install)

```
composer require iddqdby/weak-array
```

or download the archive, extract it and include file `autoload.php`.

Examples
--------

[](#examples)

### Basic usage

[](#basic-usage)

#### Code

[](#code)

```
$weak_array = new WeakArray\WeakArray();

$foo = new stdClass();
$bar = new stdClass();
$baz = new stdClass();

$weak_array['foo'] = $foo;
$weak_array['bar'] = $bar;
$weak_array['baz'] = $baz;

var_export($weak_array['foo']);
echo "\n";

var_export($weak_array['bar']);
echo "\n";

var_export($weak_array['baz']);
echo "\n";

echo "====\n";

unset($foo);
unset($bar);

var_export($weak_array['foo']);
echo "\n";

var_export($weak_array['bar']);
echo "\n";

var_export($weak_array['baz']);
echo "\n";
```

#### Output

[](#output)

```
stdClass::__set_state(array(
))
stdClass::__set_state(array(
))
stdClass::__set_state(array(
))
====
NULL
NULL
stdClass::__set_state(array(
))

```

### Events

[](#events)

#### Code

[](#code-1)

```
class Observer implements \SplObserver {
    public function update(\SplSubject $event) {
        // $event instanceof WeakArray\Event;
        // see WeakArray\Event class to view all available methods and Event::* constants
        switch ($event->getType()) {
            case WeakArray\Event::OBJECT_SET:
                $event_str = 'set';
                break;
            case WeakArray\Event::OBJECT_UNSET:
                $event_str = 'unset';
                break;
            case WeakArray\Event::OBJECT_DESTRUCTED:
                $event_str = 'destructed';
                break;
        }
        printf("Object %s, key %s\n", $event_str, $event->getKey());
    }
}

$weak_array = new WeakArray\WeakArray();
$observer = new Observer();

$weak_array->attach($observer);

$foo = new stdClass();
$bar = new stdClass();
$baz = new stdClass();

$weak_array['foo'] = $foo;
$weak_array['bar'] = $bar;
$weak_array['baz'] = $baz;

unset($foo);

unset($weak_array['bar']);
unset($weak_array['baz']);
```

#### Output

[](#output-1)

```
Object set, key foo
Object set, key bar
Object set, key baz
Object destructed, key foo
Object unset, key bar
Object unset, key baz

```

See `examples/` and `test/` directories for working examples.

Requirements
------------

[](#requirements)

- PHP: 5.5, 5.6, 7.0
- WeakRef PHP extension: 0.2.6 for PHP 5.5 and PHP 5.6, &gt;=0.3 for PHP 7.0

Homepage
--------

[](#homepage)

Versioning
----------

[](#versioning)

This project follows the [Semantic Versioning](http://semver.org/) principles.

License
-------

[](#license)

This project is licensed under the MIT License. See [LICENSE](LICENSE).

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

10

Last Release

3709d ago

Major Versions

v1.1.1 → v2.0.02016-03-20

PHP version history (2 changes)v1.0.0PHP ^5.5 || ^7.0

v1.1.0PHP ^5.6 || ^7.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/76812b19b011b9cc897be2d8f2d248ca06d47c6c9d7e90f1f6885e25caa7a16d?d=identicon)[iddqdby](/maintainers/iddqdby)

---

Top Contributors

[![iddqdby](https://avatars.githubusercontent.com/u/5861599?v=4)](https://github.com/iddqdby "iddqdby (6 commits)")

---

Tags

arrayReferencearraysweakrefweakmapreferencesweakweak referenceweak referencesweak arrayweak arraysweakarray

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/iddqdby-weak-array/health.svg)

```
[![Health](https://phpackages.com/badges/iddqdby-weak-array/health.svg)](https://phpackages.com/packages/iddqdby-weak-array)
```

###  Alternatives

[doctrine/collections

PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.

6.0k411.1M1.2k](/packages/doctrine-collections)[symfony/property-access

Provides functions to read and write from/to an object or array using a simple string notation

2.8k295.3M2.5k](/packages/symfony-property-access)[nette/utils

🛠 Nette Utils: lightweight utilities for string &amp; array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.

2.1k394.3M1.5k](/packages/nette-utils)[league/config

Define configuration arrays with strict schemas and access values with dot notation

564302.2M24](/packages/league-config)[benmorel/weakmap-polyfill

A WeakMap polyfill for PHP 7.4

471.5M5](/packages/benmorel-weakmap-polyfill)[minwork/array

Pack of advanced array functions specifically tailored for: associative (assoc) array, multidimensional array, array of objects and handling nested array elements

66256.1k5](/packages/minwork-array)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
