PHPackages                             matthijsthoolen/resource-watcher - 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. matthijsthoolen/resource-watcher

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

matthijsthoolen/resource-watcher
================================

Simple PHP resource watcher library.

2.0.1(7y ago)0283PHPPHP &gt;=7.1

Since Feb 7Pushed 7y ago1 watchersCompare

[ Source](https://github.com/matthijsthoolen/resource-watcher)[ Packagist](https://packagist.org/packages/matthijsthoolen/resource-watcher)[ RSS](/packages/matthijsthoolen-resource-watcher/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (4)Versions (12)Used By (0)

Resource Watcher
================

[](#resource-watcher)

A resource watcher allows you to watch a resource for any changes. This means you can watch a directory and then listen for any changes to files within that directory or to the directory itself.

Installation
------------

[](#installation)

To install Resource Watcher add it to the `requires` key of your `composer.json` file.

```
"matthijsthoolen/resource-watcher": "2.0.*"

```

Then update your project with `composer update`.

Usage
-----

[](#usage)

The Resource Watcher is best used from a console. An example of a console command can be found in the `watcher` file. This file is commented to give you an idea of how to configure and use a resource watcher. Once you've customized the command to your liking you can run it from your console.

```
$ php watcher

```

Any changes you make to the resource will be outputted to the console.

Quick Overview
--------------

[](#quick-overview)

To watch resources you first need an instance of `MatthijsThoolen\ResourceWatcher\Watcher`. This class has a few dependencies (`MatthijsThoolen\ResourceWatcher\Tracker` and `Illuminate\Filesystem\Filesystem`) that must also be instantiated.

```
$files = new Illuminate\Filesystem\Filesystem;
$tracker = new MatthijsThoolen\ResourceWatcher\Tracker;

$watcher = new MatthijsThoolen\ResourceWatcher\Watcher($tracker, $files);
```

Now that we have our watcher we can create a listener for a given resource.

```
$listener = $watcher->watch('path/to/resource');
```

When you watch a resource an instance of `MatthijsThoolen\ResourceWatcher\Listener` is returned. With this we can now listen for certain events on a resource.

There are three events we can listen for: `modify`, `create`, and `delete`. The callback you give to the listener receives two parameters, the first being an implementation of `MatthijsThoolen\ResourceWatcher\Resource\ResourceInterface` and the second being the absolute path to the resource.

```
$listener->modify(function($resource, $path) {
    echo "{$path} has been modified.".PHP_EOL;
});
```

You can use the alias methods as well.

```
$listener->onModify(function($resource, $path) {
    echo "{$path} has been modified.".PHP_EOL;
});
```

You can also listen for any of these events. This time the callback receives a different set of parameters, the first being an instance of `MatthijsThoolen\ResourceWatcher\Event` and the remaining two being the same as before.

```
$listener->anything(function($event, $resource, $path) {

});
```

> Remember that each call to `$watcher->watch()` will return an instance of `MatthijsThoolen\ResourceWatcher\Listener`, so be sure you attach listeners to the right one!

Once you're watching some resources and have your listeners set up you can start the watching process.

```
$watcher->start();
```

By default the watcher will poll for changes every second. You can adjust this by passing in an optional first parameter to the `start` method. The polling interval is given in microseconds, so 1,000,000 microseconds is 1 second. The watch will continue until such time that it's aborted from the console. To set a timeout pass in the number of microseconds before the watch will abort as the second parameter.

The `start` method can also be given a callback as an optional third parameter. This callback will be fired before checking for any changes to resources.

```
$watcher->start(1000000, null, function($watcher) {
	// Perhaps perform some other check and then stop the watch.
	$watcher->stop();
});
```

Framework Integration
---------------------

[](#framework-integration)

### Laravel 4 and Laravel 5

[](#laravel-4-and-laravel-5)

Included is a service provider for the Laravel framework. This service provider will bind an instance of `MatthijsThoolen\ResourceWatcher\Watcher` to the application container under the `watcher` key.

Register `MatthijsThoolen\ResourceWatcher\Integration\LaravelServiceProvider` in the array of providers in `app/config/app.php`.

```
$listener = $app['watcher']->watch('path/to/resource');

// Or if you don't have access to an instance of the application container.
$listener = app('watcher')->watch('path/to/resource');
```

License
-------

[](#license)

Resource Watcher is released under the 2-clause BSD license. See the `LICENSE` for more details.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 78.6% 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 ~222 days

Recently: every ~2 days

Total

11

Last Release

2613d ago

Major Versions

1.3.2 → 2.02019-03-05

PHP version history (3 changes)v1.0.0PHP &gt;=5.3.0

2.0PHP &gt;=7.2.0

2.0.1PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/f5e82520c051d2402005f79bf8ca2be038283a1b34c1cd4a770f739b098a7b82?d=identicon)[Eragon](/maintainers/Eragon)

---

Top Contributors

[![jasonlewis](https://avatars.githubusercontent.com/u/829059?v=4)](https://github.com/jasonlewis "jasonlewis (55 commits)")[![matthijsthoolen](https://avatars.githubusercontent.com/u/1309536?v=4)](https://github.com/matthijsthoolen "matthijsthoolen (9 commits)")[![assertchris](https://avatars.githubusercontent.com/u/200609?v=4)](https://github.com/assertchris "assertchris (2 commits)")[![bencorlett](https://avatars.githubusercontent.com/u/181919?v=4)](https://github.com/bencorlett "bencorlett (1 commits)")[![furey](https://avatars.githubusercontent.com/u/1914481?v=4)](https://github.com/furey "furey (1 commits)")[![Nyholm](https://avatars.githubusercontent.com/u/1275206?v=4)](https://github.com/Nyholm "Nyholm (1 commits)")[![suwardany](https://avatars.githubusercontent.com/u/2053770?v=4)](https://github.com/suwardany "suwardany (1 commits)")

---

Tags

laravelresourceassets

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/matthijsthoolen-resource-watcher/health.svg)

```
[![Health](https://phpackages.com/badges/matthijsthoolen-resource-watcher/health.svg)](https://phpackages.com/packages/matthijsthoolen-resource-watcher)
```

###  Alternatives

[barryvdh/laravel-ide-helper

Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.

14.9k123.0M681](/packages/barryvdh-laravel-ide-helper)[yajra/laravel-datatables-oracle

jQuery DataTables API for Laravel

4.9k33.8M335](/packages/yajra-laravel-datatables-oracle)[jasonlewis/resource-watcher

Simple PHP resource watcher library.

221145.8k14](/packages/jasonlewis-resource-watcher)[genealabs/laravel-changelog

A Laravel Nova tool.

55250.7k](/packages/genealabs-laravel-changelog)[erlandmuchasaj/laravel-gzip

Gzip your responses.

40129.3k2](/packages/erlandmuchasaj-laravel-gzip)[tehwave/laravel-achievements

Simple, elegant Achievements the Laravel way

7012.8k](/packages/tehwave-laravel-achievements)

PHPackages © 2026

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