diff --git a/roles/neovim/files/lua/opdavies/snippets/ft/php.lua b/roles/neovim/files/lua/opdavies/snippets/ft/php.lua
index a49e622d..e17221c8 100644
--- a/roles/neovim/files/lua/opdavies/snippets/ft/php.lua
+++ b/roles/neovim/files/lua/opdavies/snippets/ft/php.lua
@@ -7,6 +7,27 @@ local s = luasnip.snippet
 local t = luasnip.text_node
 
 return {
+  -- TODO: only load if within a Drupal project?
+  s(
+    "drupalclass",
+    fmta(
+      [[
+      <<?php
+
+      declare(strict_types=1);
+
+      namespace Drupal\<>;
+
+      <>class <> {
+
+        <>
+
+      }
+      ]],
+      { i(1), c(2, { t '', t 'final ' }), i(3), i(0) }
+    )
+  ),
+
   s(
     "test",
     fmta(