michaelmeneses / moodle-stubs
PHP stubs for Moodle LMS — classes, functions, constants, and global variables for IDE and static analysis support
Requires
- php: ^8.1
Requires (Dev)
- michaelmeneses/bimoo: dev-master
- dev-main
- v5.2.0
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.5.11
- v4.5.10
- v4.5.9
- v4.5.8
- v4.5.7
- v4.5.6
- v4.5.5
- v4.5.4
- v4.5.3
- v4.5.2
- v4.5.1
- v4.5.0
- v4.4.12
- v4.4.11
- v4.4.10
- v4.4.9
- v4.4.8
- v4.4.7
- v4.4.6
- v4.4.5
- v4.4.4
- v4.4.3
- v4.4.2
- v4.4.1
- v4.4.0
- v4.3.12
- v4.3.11
- v4.3.10
- v4.3.9
- v4.3.8
- v4.3.7
- v4.3.6
- v4.3.5
- v4.3.4
- v4.3.3
- v4.3.2
- v4.3.1
- v4.3.0
- v4.2.11
- v4.2.10
- v4.2.9
- v4.2.8
- v4.2.7
- v4.2.6
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.22
- v4.1.21
- v4.1.20
- v4.1.19
- v4.1.18
- v4.1.17
- v4.1.16
- v4.1.15
- v4.1.14
- v4.1.13
- v4.1.12
- v4.1.11
- v4.1.10
- v4.1.9
- v4.1.8
- v4.1.7
- v4.1.6
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.12
- v4.0.11
- v4.0.10
- v4.0.9
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- dev-MOODLE_502_STABLE
- dev-MOODLE_501_STABLE
- dev-MOODLE_500_STABLE
- dev-MOODLE_405_STABLE
- dev-MOODLE_404_STABLE
- dev-MOODLE_402_STABLE
- dev-MOODLE_403_STABLE
- dev-MOODLE_400_STABLE
- dev-MOODLE_401_STABLE
- dev-MOODLE_39_STABLE
- dev-MOODLE_38_STABLE
- dev-MOODLE_37_STABLE
- dev-MOODLE_36_STABLE
- dev-MOODLE_35_STABLE
- dev-MOODLE_34_STABLE
- dev-MOODLE_33_STABLE
- dev-MOODLE_32_STABLE
- dev-MOODLE_311_STABLE
- dev-MOODLE_31_STABLE
- dev-MOODLE_310_STABLE
- dev-MOODLE_30_STABLE
- dev-MOODLE_29_STABLE
- dev-MOODLE_28_STABLE
- dev-MOODLE_27_STABLE
- dev-MOODLE_26_STABLE
- dev-MOODLE_25_STABLE
- dev-MOODLE_24_STABLE
- dev-MOODLE_23_STABLE
- dev-MOODLE_22_STABLE
- dev-MOODLE_21_STABLE
- dev-MOODLE_20_STABLE
- dev-MOODLE_19_STABLE
- dev-MOODLE_18_STABLE
- dev-MOODLE_15_STABLE
- dev-MOODLE_16_STABLE
- dev-MOODLE_14_STABLE
- dev-MOODLE_17_STABLE
- dev-MOODLE_13_STABLE
This package is auto-updated.
Last update: 2026-05-03 02:33:07 UTC
README
PHP stub files for the Moodle LMS codebase. Provides IDE autocompletion and static analysis support for Moodle's classes, functions, constants, and global variables — without requiring a full Moodle installation.
Ideal for Moodle plugin developers, theme developers, and anyone working with Moodle's PHP API outside of a full Moodle environment.
Installation
composer require --dev michaelmeneses/moodle-stubs
To pin to a specific Moodle version:
# Latest patch for Moodle 4.3.x composer require --dev michaelmeneses/moodle-stubs:^4.3 # Latest patch for Moodle 5.0.x composer require --dev michaelmeneses/moodle-stubs:^5.0 # Exact version composer require --dev michaelmeneses/moodle-stubs:4.3.2
Usage
PHPStan
Add to your phpstan.neon:
parameters: scanDirectories: - vendor/michaelmeneses/moodle-stubs/stubs
Now PHPStan recognizes all Moodle classes, functions, and globals:
// PHPStan knows $DB is moodle_database, $CFG is stdClass, etc. global $DB, $CFG; $record = $DB->get_record('user', ['id' => 1]); // Fully typed $wwwroot = $CFG->wwwroot; // No "undefined property" errors
Psalm
Add to your psalm.xml:
<psalm> <stubs> <dir name="vendor/michaelmeneses/moodle-stubs/stubs"/> </stubs> </psalm>
Rector
Rector uses PHPStan internally. Add the PHPStan configuration above and Rector will pick it up automatically.
PhpStorm
Stubs are detected automatically via Composer. If autocompletion is not working, mark the vendor/michaelmeneses/moodle-stubs/stubs directory as a Sources Root (right-click > Mark Directory as > Sources Root).
VS Code (Intelephense)
Intelephense picks up stubs from Composer dependencies automatically. No extra configuration needed.
What's Included
- Classes, interfaces, traits, and enums — full declarations with method signatures, type hints, and PHPDoc
- Functions — all procedural functions from Moodle core libraries (
lib/moodlelib.php,lib/weblib.php,lib/accesslib.php, etc.) - Constants — both
define()andconstdeclarations (MOODLE_INTERNAL,PARAM_INT,CONTEXT_*, etc.) - Global variables —
$DB,$CFG,$USER,$PAGE,$OUTPUT,$SESSION,$COURSE,$SITEwith correct type annotations - Full coverage — all PHP files in the Moodle codebase, not just core libraries
All implementation bodies are stripped — only declarations and signatures are preserved.
Versions
Each Moodle release branch and version tag has a corresponding branch/tag in this repository:
| This repository | Moodle source | Use case |
|---|---|---|
Tag v4.3.2 |
Moodle release v4.3.2 |
Pin to a specific release (recommended for production) |
Tag v5.0.0 |
Moodle release v5.0.0 |
Pin to a specific release |
Branch MOODLE_403_STABLE |
Latest MOODLE_403_STABLE |
Track latest patches for 4.3.x |
Branch MOODLE_500_STABLE |
Latest MOODLE_500_STABLE |
Track latest patches for 5.0.x |
Branch master |
Latest Moodle master |
Bleeding edge development |
Branches are updated weekly. Tags are immutable — once created, they never change.
How It Works
Stubs are auto-generated by bimoo, an AST-based stub generator built with nikic/php-parser. A GitHub Actions workflow runs weekly to:
- Detect new commits in Moodle's official repository
- Regenerate stubs only for branches that changed (SHA-based tracking)
- Create tags for new Moodle releases automatically
Sponsors
Maintained by Michael Meneses and supported by MIDDAG — Moodle development and technical services.
Building Moodle plugins? Check out MIDDAG for Moodle — a plugin suite and development framework that brings modern developer experience to Moodle, inspired by tools like Symfony and Laravel.
Credits
Based on the original machitgarha/bimoo project by Mohammad Amin Chitgarha.
License
Licensed under GPL 3.0.