$files->include() method

Include a PHP file passing it all API variables and optionally your own specified variables

This is the same as PHP’s include() function except for the following:

  • It receives all API variables and optionally your custom variables
  • If your filename is not absolute, it doesn’t look in PHP’s include path, only in the current dir.
  • It only allows including files that are part of the PW installation: templates, core modules or site modules
  • It will assume a “.php” extension if filename has no extension.

Note this function produces direct output. To retrieve output as a return value, use the $files->render() function instead.

Usage

// basic usage
$bool = $files->include(string $filename);

// usage with all arguments
$bool = $files->include(string $filename, array $vars = [], array $options = []);

Arguments

NameType(s)Description
filenamestring

Filename to include

vars (optional)array

Optional variables you want to hand to the include (associative array)

options (optional)array

Array of options to modify behavior:

  • func (string): Function to use: include, include_once, require or require_once (default=include)
  • autoExtension (string): Extension to assume when no ext in filename, make blank for no auto assumption (default=php)
  • allowedPaths (array): Array of start paths include files are allowed from. Note current dir is always allowed.

Return value

bool

Always returns true

Exceptions

Method can throw exceptions on error:

  • WireException - if file doesn’t exist or is not allowed


Hooking $files->include(…)

You can add your own hook events that are executed either before or after the $files->include(…) method is executed. Examples of both are included below. A good place for hook code such as this is in your /site/ready.php file.

Hooking before

The 'before' hooks are called immediately before each $files->include(…) method call is executed. This type of hook is especially useful for modifying arguments before they are sent to the method.

$this->addHookBefore('WireFileTools::include', function(HookEvent $event) {
  // Get the object the event occurred on, if needed
  $files = $event->object;

  // Get values of arguments sent to hook (and optionally modify them)
  $filename = $event->arguments(0);
  $vars = $event->arguments(1);
  $options = $event->arguments(2);

  /* Your code here, perhaps modifying arguments */

  // Populate back arguments (if you have modified them)
  $event->arguments(0, $filename);
  $event->arguments(1, $vars);
  $event->arguments(2, $options);
});

Hooking after

The 'after' hooks are called immediately after each $files->include(…) method call is executed. This type of hook is especially useful for modifying the value that was returned by the method call.

$this->addHookAfter('WireFileTools::include', function(HookEvent $event) {
  // Get the object the event occurred on, if needed
  $files = $event->object;

  // An 'after' hook can retrieve and/or modify the return value
  $return = $event->return;

  // Get values of arguments sent to hook (if needed)
  $filename = $event->arguments(0);
  $vars = $event->arguments(1);
  $options = $event->arguments(2);

  /* Your code here, perhaps modifying the return value */

  // Populate back return value, if you have modified it
  $event->return = $return;
});

$files methods and properties

API reference based on ProcessWire core version 3.0.185

Twitter updates

  • ProcessWire 3.0.190 has 15 commits relative to 3.0.189 and contains a mixture of issue resolutions and feature additions. We’ll review these below, in addition to updates for the PageAutosave and ProFields Table modules— More
    3 December 2021
  • Great video by @jlahijani that demonstrates his ProcessWire page builder using ProFields Repeater Matrix, the new Page Autosave + Live Preview module and Uikit 3— youtube.com/watch?v=Rb5kiU…
    13 November 2021
  • More development on page automatic save this week, plus the addition of live preview— More
    12 November 2021

Latest news

  • ProcessWire Weekly #395
    In the 395th issue of ProcessWire Weekly we'll cover the latest core updates, check out the MJLM to HTML module, and more. Read on!
    Weekly.pw / 4 December 2021
  • ProcessWire 3.0.190 core updates
    ProcessWire 3.0.190 has 15 commits relative to 3.0.189 and contains a mixture of issue resolutions and feature additions. This post covers them all, in addition to updates for the PageAutosave and ProFields Table modules.
    Blog / 3 December 2021
  • Subscribe to weekly ProcessWire news

“ProcessWire is like a breath of fresh air. So powerful yet simple to build with and customise, and web editors love it too.” —Margaret Chatwin, Web developer