Introduction#
This class is a special page class that is not backed by a file on disk, but rather generated at runtime. While it will probably not be useful for the majority of users, it's a great class to know about if you are a package developer, but feel free to skip this section if you're not interested in this.
When to use#
This class is especially useful for one-off custom pages. But if your usage grows, or if you want to utilize Hyde autodiscovery, you may benefit from creating a custom page class instead, as that will give you full control.
About discovery#
Since the InMemoryPages are not present in the filesystem, they cannot be found by the auto-discovery process.
Instead, it's up to the developer to manually register them. If you are working on your own project, you can do this in
the boot
method of a service provider, such as the AppServiceProvider
which is already present in your app/
directory.
If you are developing a package, you may instead want to register the page in your package extension class, within the page collection callback. In either case, if you want your page to be able to be fully processed by Hyde, you need to make sure you register it before the full application is booted so that routes can be generated.
To see how to register the page, see the examples below. But first we must look at how to actually create the page.
Creating the page#
To create an InMemoryPage, you need to instantiate it with the required parameters.
Since a page would not be useful without any content to render, the class offers two content options through the constructor.
You can either pass a string to the $contents
parameter, Hyde will then save that literally as the page's contents.
$page = new InMemoryPage(contents: 'Hello World!');
Alternatively, you can pass a Blade view name to the $view
parameter, and Hyde will use that view to render the page
contents with the supplied front matter during the static site build process.
Note that
$contents
take precedence over$view
, so if you pass both, only$contents
will be used.
You can also register a macro with the name compile
to overload the default compile method.
API Reference#
To see all the methods available, please see the InMemoryPage API reference.