Manje poznati PHP statementsi

Dosad se nisam sretao sa use , i sad kod novog facebookovog PHP SDK-a, imam nešto nalik:

use Facebook\FacebookSession;
use Facebook\FacebookRequest;

što bi to bilo?
Da stvar bude bolja, finu glavobolju mi je to priuštilo dok sam shvatio da taj use neće raditi unutar if() uvjeta :s . Što mi je totalno neočekivano, i dalje bi rekao da sam ja negdje pogriješio…da nisam sveo primjer na:

if(1)
{
//...initialiazing facebook PHP SDK
use Facebook\FacebookSession;
//...work with fb PHP SDK
}

…koji neće raditi.
Dok sljedeći hoće:

//...initialiazing facebook PHP SDK
use Facebook\FacebookSession;
//...work with fb PHP SDK

Zašto pobogu taj use neće raditi unutar if(){…} uvjeta??

Error njega okrivi

PHP Parse error: syntax error, unexpected ‘use’ (T_USE) in…

To je definiranje namespacea i mora biti postavljeno u vrhu php dokumenta (nikako unutar if-else, foreach, switch ili ispod definiranja varijabla, baš mora biti u vrhu dokumenta). Ako se namespacei pravilno koriste može se napraviti autoload klase npr. Facebook\FaceboksSession će includati file - Facebook/FacebookSession.php i pozvati FacebookSession klasu.

http://php.net/manual/en/language.namespaces.basics.php
http://php.net/manual/en/language.namespaces.php

Uglavnom, ne moraš se s time zamarati, samo ostavi use Facebook na početku dokumenta i to je to, ako koristiš Facebook classu includat će se fajl, ako ne neće, preko use samo definiraš koje klase će ti trebati prilikom izvršenja trenutnog fajla.

Da bi to shvatio prvo se moras upoznati sa osnovama OO programiranja, nakon toga ce ti sve biti puno jasnije, kao sto rece @crazy_man to su namespaces i jedan od mnogih blagodati OO programiranja.
“use” je keyword i ne moze se drugacije koristiti nego kao za includanje razlicitih namespace.

To ti je samo prosirena funkcija include.

Znaci:

use Facebook\FacebookSession;
use Facebook\FacebookRequest;

Ti je slicno kao i

include  'Facebook/FacebookSession.php';
include  'Facebook/FacebookRequest';

ali samo slicno nikako isto.