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

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

fatryst/resource-watcher
========================

Simple PHP resource watcher library.

v1.0.0(4y ago)08MITPHPPHP ^7.2.5

Since Jul 7Pushed 4y ago1 watchersCompare

[ Source](https://github.com/fatryst/resource-watcher)[ Packagist](https://packagist.org/packages/fatryst/resource-watcher)[ RSS](/packages/fatryst-resource-watcher/feed)WikiDiscussions main Synced 6d ago

READMEChangelogDependencies (2)Versions (2)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.

[![Build Status](https://camo.githubusercontent.com/b4fded5c074fb48f0b236ad98ee1a1c4ff6dd5ee4ef51b1b682c780621d3bccf/68747470733a2f2f7472617669732d63692e6f72672f666174727973742f7265736f757263652d776174636865722e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/fatryst/resource-watcher)

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

[](#installation)

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

```
"fatryst/resource-watcher": "1.2.*"

```

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 `Fatryst\ResourceWatcher\Watcher`. This class has a few dependencies (`Fatryst\ResourceWatcher\Tracker` and `Illuminate\Filesystem\Filesystem`) that must also be instantiated.

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

$watcher = new Fatryst\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 `Fatryst\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 `Fatryst\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 `Fatryst\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 `Fatryst\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 `Fatryst\ResourceWatcher\Watcher` to the application container under the `watcher` key.

Register `Fatryst\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

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

1774d ago

### Community

Maintainers

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

---

Tags

laravelresourceassets

### Embed Badge

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

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

###  Alternatives

[barryvdh/laravel-ide-helper

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

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

jQuery DataTables API for Laravel

4.9k33.8M339](/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)
