3: Initialization, constants, and the NV class

The NV class performs all the theme framework’s initialization/bootstrapping; it loads all the classes, other framework files, theme hooks, and components. It is located in NV/NV.php.

When starting a new project, this is usually the first file you should look at. This article will deal almost exclusively with this file.

Triggering Initialization

By using a singleton pattern for the NV class we can ensure that hooks are never accidentally executed more than once. This pattern also allows us to drop sloppy global theme constants in favor of nice, scope-appropriate class properties. Although the class is initialized automatically, you can access the singleton instance at any time by calling \NV\Theme\NV::i().

Initialization Overview

Step 1: Set Properties

The first thing the class does is load all necessary theme properties. In NOUVEAU, you have two primary property objects:

NV::i()->pathThis object includes a list of system paths for all of NOUVEAUs main includable files and directories.

NV::i()->urlThis object includes a list of URLs for all of NOUVEAUs main URL-accessable files and directories.

Step 2: Load Language

If available and configured, language files are loaded by NV::languages().

Step 3: Execute Hooks

Finally, all the hooks needed to set up the theme are executed by NV::hooks(). You should place your own hooks in this method… but before you add new hooks, have a quick look here to see if the hook you want to use is already configured.

If you are just getting started with NOUVEAU, you should be able to learn just about everything you need to know by taking a look at the NV::hooks() method. It’s fully commented and organized for quick and easy reading.

TIP: By default, every hook in NOUVEAU points to a class method in the nv/Hooks folder.

TIP: If you are using JetBrain’s fantasticPhpStorm IDE, you can CMD + Click on any hook callbacks to jump straight to the method you are interested in.

This page was last updated on September 15, 2016 – it is currently considered BEING REVISED.