0

This works:

require_once( $_SERVER["DOCUMENT_ROOT"] . '/fb/FacebookSession.php' );
use Facebook\FacebookSession;

This doesn't:

if (1 == 1) {
    require_once( $_SERVER["DOCUMENT_ROOT"] . '/fb/FacebookSession.php' );
    use Facebook\FacebookSession;
}

It returns the following error:

Parse error: syntax error, unexpected 'use' (T_USE) in /fb.php on line 3

How can I use a namespace within a control structure?

Community
  • 1
  • 1
  • 1
    This is because the importing is done at compile time and not runtime. – Abhik Chakraborty May 08 '14 at 11:17
  • @AbhikChakraborty Aha, I see, thank you. So if I have `require` and `use` in a separate php-file (``) and require that within the if-statement (`if (1 == 1) { require(namespace.php); }`), it will work? –  May 08 '14 at 11:21

1 Answers1

0

You can always use the fully qualified class name:

$session = new \Facebook\FacebookSession();

Or if you need to dynamically select classes:

$class = '\\Twitter\\TwitterSession';

if (1 == 1) {
    require_once( $_SERVER["DOCUMENT_ROOT"] . '/fb/FacebookSession.php' );
    $class = '\\Facebook\\FacebookSession';
}

$session = new $class();
Flosculus
  • 6,880
  • 3
  • 18
  • 42