mixin.php
Scan for files which implement common Civi-PHP interfaces.
Specifically, this listens to hook_scanClasses
and reports any classes with Civi-related
interfaces (eg CRM_Foo_BarInterface
or Civi\Foo\BarInterface
). For example:
- \Civi\Core\HookInterface
- \Civi\Test\ExampleDataInterface
- \Civi\WorkflowMessage\WorkflowMessageInterface
If you are adding this to an existing extension, take care that you meet these assumptions:
- Classes live in 'CRM_' ('./CRM/.php') or 'Civi' ('./Civi/.php').
- Class files only begin with uppercase letters.
- Class files only contain alphanumerics.
- Class files never have multiple dots in the name. ("CRM/Foo.php" is a class; "CRM/Foo.bar.php" is not).
- The ONLY files which match these patterns are STRICTLY class files.
- The ONLY classes which match these patterns are SAFE/INTENDED for use with
hook_scanClasses
. - Test directories are not scanned in version 1.1+. See https://github.com/civicrm/civicrm-core/pull/26157
To minimize unintended activations, this only loads Civi interfaces. It skips other interfaces.