PHPackages                             ssitu/igor - 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. [CLI &amp; Console](/categories/cli)
4. /
5. ssitu/igor

ActiveLibrary[CLI &amp; Console](/categories/cli)

ssitu/igor
==========

Igor will auto-generate your interfaces files.

v1.2.0(4y ago)12MITPHP

Since May 26Pushed 4y ago1 watchersCompare

[ Source](https://github.com/I-is-as-I-does/Igor)[ Packagist](https://packagist.org/packages/ssitu/igor)[ Docs](https://github.com/I-is-as-I-does/Igor)[ RSS](/packages/ssitu-igor/feed)WikiDiscussions main Synced 5d ago

READMEChangelog (5)DependenciesVersions (7)Used By (0)

Igor
====

[](#igor)

Igor will auto-generate your interfaces files. Specify a file or directory, and voilà!

Yes, *I know*. Usually, you write your interfaces first, and generate files *from* them. But for odd cases or weird people, Igor is there.

Getting Started
---------------

[](#getting-started)

### Install

[](#install)

```
composer require ssitu/igor
```

### Ready for CLI

[](#ready-for-cli)

To uses Igor in CLI, install `ssitu/euclid` too. Check out `IgorCli.php` in `src/`, and `bin/igor` in `samples/`.

```
php bin/igor
```

And then just follow the prompts!

TLDR
----

[](#tldr)

```
use SSITU\Igor\Igor;
require_once 'path/to/autoload.php';
$Igor = new Igor();
$Igor->set_intrNamespace('Castle\\MonseigneurNamespace')
     ->doALLtheInterfaces('classes/src/path/', 'interfaces/dest/path');
```

Methods
-------

[](#methods)

### Main

[](#main)

```
$Igor->doALLtheInterfaces($srcdir, $intfdir);
$Igor->doOneInterface($srcfile, $dest);
```

### Setters

[](#setters)

All setters are chainable.

#### Files Details

[](#files-details)

```
$Igor->set_srcFilesGlobpattrn($pattern); // default: "*[!(_i)].php"
$Igor->set_intrFilesGlobpattrn($pattern); // default: none
$Igor->set_intrFilesSuffx($suffx); // default: "_i"
$Igor->set_intrFilesPrefx($prefx); // default: none
```

#### License Mention

[](#license-mention)

Manually specify License mention (1)
Or let Igor locate it in source file and copy it (2)

```
$Igor->set_licenseMention($mention);  // (1) default: none
$Igor->set_autoSearchLicense($bool); // (2) default: true
```

#### Namespace and Implementation

[](#namespace-and-implementation)

```
$Igor->set_intrNamespace($intrNamespace); // default: ''
$Igor->set_addImplementsToSrc($bool); // default: true
$Igor->set_rewrite($bool); // default: true
```

Set interface namespace with `set_intrNamespace`.
Namespace-guessing is too hazardous; better not breaking your code.

If `set_addImplementsToSrc` set to `true`: Igor will add `implements \InterfaceNamespace\InterfaceName` to source file, *if* not already set.

`set_rewrite` applies to method `doALLtheInterfaces`.
If set to false, Igor will skip source files that already have a matching interface file.
Otherwise, said existing interface file will be rewritten from sratch.

Contributing
------------

[](#contributing)

Sure! You can take a loot at [CONTRIBUTING](CONTRIBUTING.md).

License
-------

[](#license)

This project is under the MIT License; cf. [LICENSE](LICENSE) for details.

[![Igor](Igor.jpg)](Igor.jpg)

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 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 ~14 days

Total

5

Last Release

1757d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0abf823fded25a054764d7b7106a69b4281ff506994ffe2fea00d8a9296e715a?d=identicon)[I-is-as-I-does](/maintainers/I-is-as-I-does)

---

Top Contributors

[![I-is-as-I-does](https://avatars.githubusercontent.com/u/66915011?v=4)](https://github.com/I-is-as-I-does "I-is-as-I-does (11 commits)")

---

Tags

automationcliinterfacesphpphpautomationinterface

### Embed Badge

![Health badge](/badges/ssitu-igor/health.svg)

```
[![Health](https://phpackages.com/badges/ssitu-igor/health.svg)](https://phpackages.com/packages/ssitu-igor)
```

###  Alternatives

[nunomaduro/termwind

It's like Tailwind CSS, but for the console.

2.5k239.8M286](/packages/nunomaduro-termwind)[nunomaduro/laravel-console-task

Laravel Console Task is a output method for your Laravel/Laravel Zero commands.

2582.1M11](/packages/nunomaduro-laravel-console-task)[merlinthemagic/mts

PHP Automation Tools

1144.5k](/packages/merlinthemagic-mts)[alecrabbit/php-cli-snake

Lightweight cli spinner with zero dependencies

29211.3k5](/packages/alecrabbit-php-cli-snake)

PHPackages © 2026

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