https://github.com/utopia-php/detector
Lite & fast micro PHP detector library that is **easy to use**.
https://github.com/utopia-php/detector
Last synced: 30 days ago
JSON representation
Lite & fast micro PHP detector library that is **easy to use**.
- Host: GitHub
- URL: https://github.com/utopia-php/detector
- Owner: utopia-php
- License: mit
- Created: 2025-01-08T12:21:45.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-17T11:26:34.000Z (about 1 month ago)
- Last Synced: 2026-02-17T16:54:11.254Z (about 1 month ago)
- Language: PHP
- Size: 133 KB
- Stars: 3
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Utopia Detector
[](https://travis-ci.com/utopia-php/detector)

[](https://appwrite.io/discord)
Utopia Detector is a simple library for fast and reliable environment identification. This library is aiming to be as simple and easy to learn and use. This library is maintained by the [Appwrite team](https://appwrite.io).
## Getting Started
Install using composer:
```bash
composer require utopia-php/detector
```
Init in your application:
```php
addOption(new PNPM())
->addOption(new Yarn())
->addOption(new NPM());
$detectedPackager = $detector->detect();
$packagerName = $detectedPackager->getName();
// Initialise Runtime Detection
$detector = new Runtime(
$files,
new Strategy(Strategy::FILEMATCH), // similar for LANGUAGES and EXTENSIONS
'pnpm'
);
$detector
->addOption(new Node())
->addOption(new Bun())
->addOption(new Deno())
->addOption(new PHP())
->addOption(new Python())
->addOption(new Dart())
->addOption(new Swift())
->addOption(new Ruby())
->addOption(new Java())
->addOption(new CPP())
->addOption(new Dotnet());
$detectedRuntime = $detector->detect();
$runtime = $detectedRuntime->getName();
$runtimeCommands = $detectedRuntime->getCommands();
// Initialise Framework Detection
$files = ['src', 'types', 'makefile', 'components.js', 'debug.js', 'package.json', 'svelte.config.js'];
$packager = 'pnpm';
$detector = new Framework($files, $packager);
$detector
->addOption(new Flutter())
->addOption(new Nuxt())
->addOption(new Astro())
->addOption(new Analog())
->addOption(new Angular())
->addOption(new Remix())
->addOption(new SvelteKit())
->addOption(new Lynx())
->addOption(new NextJs());
$detectedFramework = $detector->detect();
$framework = $detectedFramework->getName();
$frameworkInstallCommand = $framework = $detectedFramework->getInstallCommand();
// Initialise Rendering Detection
$files = ['./build/server/index.js', './build/server/renderers.js'];
$framework = 'remix';
$detector = new Rendering($files, $framework);
$detector
->addOption(new SSR())
->addOption(new Static());
$detectedRendering = $detector->detect();
$rendering = $detectedRendering->getName();
```
### Supported Adapters
Detector Adapters:
| Adapter | Status |
|---------|---------|
| Runtime | ✅ |
| Framework | ✅ |
| Packager | ✅ |
| Rendering | ✅ |
Runtime Adapters:
| Adapter | Status |
|---------|---------|
| CPP | ✅ |
| Dart | ✅ |
| Deno | ✅ |
| Dotnet | ✅ |
| Java | ✅ |
| JavaScript | ✅ |
| PHP | ✅ |
| Python | ✅ |
| Ruby | ✅ |
| Swift | ✅ |
| Bun | ✅ |
Framework Adapters:
| Adapter | Status |
|---------|---------|
| Astro | ✅ |
| Flutter | ✅ |
| NextJs | ✅ |
| Nuxt | ✅ |
| Remix | ✅ |
| SvelteKit | ✅ |
| Angular | ✅ |
| Analog | ✅ |
| Lynx | ✅ |
Packager Adapters:
| Adapter | Status |
|---------|---------|
| NPM | ✅ |
| PNPM | ✅ |
| Yarn | ✅ |
Rendering Adapters:
| Adapter | Status |
|---------|---------|
| SSR | ✅ |
| Static | ✅ |
`✅ - supported, 🛠 - work in progress`
## System Requirements
Utopia Detector requires PHP 8.0 or later. We recommend using the latest PHP version whenever possible.
## Contributing
All code contributions - including those of people having commit access - must go through a pull request and approved by a core developer before being merged. This is to ensure proper review of all the code.
Fork the project, create a feature branch, and send us a pull request.
You can refer to the [Contributing Guide](CONTRIBUTING.md) for more info.
## Tests
To run all tests, use the following command:
```bash
composer test
```
## Copyright and license
The MIT License (MIT) [http://www.opensource.org/licenses/mit-license.php](http://www.opensource.org/licenses/mit-license.php)