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?

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();
  • 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 9 '15 at 9: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 9 '15 at 17:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.