Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Import class conditionally with the keyword 'use'

I've never seen this structure anywhere, so I wonder if there's something wrong with an expression like this:

if (condition) {

    use Symfony\Component\HttpFoundation\Response;

}
like image 556
ruizfrontend Avatar asked Jul 24 '14 08:07

ruizfrontend


1 Answers

The only thing use does is to alias a class name. That's it. Nothing more.
Instead of having to repeatedly write the fully qualified classname in your script:

$q = new \Foo\Bar\Baz\Quux;
if ($q instanceof \Foo\Bar\Baz\Quux) ...

You can shorten that to:

use Foo\Bar\Baz\Quux;

$q = new Quux;
if ($q instanceof Quux) ...

As such, it makes absolutely no sense to want to use use conditionally. It's just a syntactic helper; if it could be used conditionally your script syntax would become ambiguous, which is something nobody wants.

It doesn't reduce code loading, because code is only loaded explicitly by require/include calls or via autoloading. The latter one is greatly preferred, since it already lazily springs into action only when needed.

like image 184
deceze Avatar answered Oct 07 '22 12:10

deceze