4

I'm trying to include a PHP file (BrowserDetection) within my plugin.

I've tried this:

Craft::import('plugins.myPlugin.resources.php.BrowserDetection');

Which doesn't return any errors, but also doesn't work. I've also tried:

require_once 'resources/php/BrowserDetection.php';

Which does pull in the file, but each time I tried to refer to it like: "$browser = new BrowserDetection();" I get something like this:

Fatal error: Class 'Craft\BrowserDetection' not found in /Volumes/Mark Notton/Clients/The STC/Website/craft/plugins/myPlugin/MyPlugin.php on line 33

Apologies for the very noob question. I just don't understand how to pull in additional PHP resources. Perhaps I'm overlooking some bespoke craft syntax?

Mark Notton
  • 2,337
  • 1
  • 15
  • 30

1 Answers1

4

The first one example should work as long as the last BrowserDetection segment maps to the actual BrowserDetection.php file on the file system.

Fatal error: Class 'Craft\BrowserDetection' not found in /Volumes/Mark Notton/Clients/The STC/Website/craft/plugins/myPlugin/MyPlugin.php on line 33

You'd still even get that error on the first one because the BrowserDetection class is in PHP's global namespace.

You need to do:

$browser = new \BrowserDetection();
Brad Bell
  • 67,440
  • 6
  • 73
  • 143
  • 1
    Ah! It was the global namespace that was the problem. That little backslash resolved the problem. Thank you! I should mention though, the "Craft::import...." method still didn't work. "require_once..." worked perfectly. – Mark Notton Oct 09 '15 at 09:23
  • 1
    Yeah, Yii 1 didn’t support PHP namespaces. We hacked things up a bit to support the Craft namespace via Craft::import(), but at the expense of requiring you to use \Yii::import() if you want to import a class in the global namespace. (Most of the time people are just loading dependencies via Composer, and require()'ing its autoloader script, so it hasn’t been much of an issue. Will be cleaner in Craft 3 though, which runs on Yii 2 which does support namespaces. – Brandon Kelly Oct 09 '15 at 17:05