Skip to content

phlppschrr/ProcessWirePhpStormMeta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ProcessWire PhpStorm Meta

Generates a .phpstorm.meta.php file for ProcessWire autocompletion in PhpStorm.

Features

  • Autocomplete wire container keys for wire('...') and Wire::wire('...')
  • Autocomplete module names for Modules::get() and Modules::install()
  • Autocomplete field names for Fields::get()
  • Autocomplete template names for Templates::get()
  • Autocomplete unique page names for Pages::get()
  • Autocomplete hookable methods for Wire::addHook*()
  • Autocomplete page status constants/strings for Page::status(), addStatus(), removeStatus(), hasStatus()
  • Autocomplete field flags for Field::addFlag(), removeFlag(), hasFlag()
  • Autocomplete template cache-expire constants for Template::cacheExpire()
  • Autocomplete Inputfield collapsed constants for Inputfield::collapsed()
  • Autocomplete sort flags for WireArray::sort()/sortFlags()/unique() and PageArray::sort()/sortFlags()/unique()
  • Optional: Field type autocompletion per Page class (when enabled in module config)

Installation

  1. Copy the module folder into site/modules/ProcessWirePhpStormMeta/.
  2. Install the module in the ProcessWire admin.

Usage

  • Default path: site/assets/.phpstorm.meta.php (configurable in module settings).
  • The file regenerates automatically when fields, templates, or modules change (debounced).
  • You can manually regenerate from the module settings screen.
  • Optional: enable "Generate page-class field metadata" in module settings for field type hints per Page class. This is intentionally basic. For richer field stubs, use AutoTemplateStubs.

Examples

Modules

$tracy = $modules->get('TracyDebugger');
// Autocomplete + correct class type for navigation and code insight

Wire Container

$page = wire('page');
$pages = $this->wire('pages');
$cache = wire('cache');
// Autocomplete for keys like page/pages/cache/etc.

Fields

$body = $fields->get('body');
// Autocomplete field names, fewer typos

Templates

$tpl = $templates->get('basic-page');
// Autocomplete template names

Pages

$home = $pages->get('/');
// Maps to the page class when page classes are enabled

Page Status

$page->status(Page::statusHidden);
$page->addStatus('draft');
$page->removeStatus(Page::statusUnpublished);
$page->hasStatus('locked');

Field Flags

$field->addFlag(Field::flagAutojoin);
$field->removeFlag(Field::flagAccess);
$field->hasFlag(Field::flagGlobal);

Template Cache Expire

$template->cacheExpire(Template::cacheExpireParents);

Inputfield Collapsed

$inputfield->collapsed(Inputfield::collapsedYesAjax);

Sort Flags

$items->sort('title', SORT_NATURAL | SORT_FLAG_CASE);
$items->sortFlags(SORT_NATURAL);
$items->unique(SORT_STRING);

Page-Class Field Metadata (Optional)

$home = $pages->get('/');
// $home is HomePage (page class)
// Field types are inferred from the template fieldgroup
// e.g. $home->hero_image -> Pageimage or Pageimages depending on field settings

Hooks

$wire->addHookAfter('Pages::save', function($event) {
    // Autocomplete hookable methods while typing the hook string
});

Notes

  • Hook scanning reads ProcessWire core, modules, and admin templates to build the hook list.
  • If page classes are enabled, page names map to their page class; otherwise they map to Page.
  • Improvement suggestions and PRs are welcome.

License

Mozilla Public License 2.0. See LICENSE.

About

ProcessWire PhpStorm meta file generator

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages