I'm new to Laravel and using PHP namespaces in general. I didn't run into any problems until I decided to make a model named File. How would I go about namespacing correctly so I can use my File model class?
The files are app/controllers/FilesController.php
and app/models/File.php
. I am trying to make a new File
in FilesController.php
.
Namespacing is pretty easy once you get that hang of it.
Take the following example:
app/models/File.php
app/controllers/FileController.php
Declare the Namespace:
Remember, once you've put a class in a Namespace to access any of PHP's built in classes you need to call them from the Root Namespace. e.g:
$stdClass = new stdClass();
will become$stdClass = new stdClass();
(see the)
"Import" other Namespaces:
This Allows you to then use the
File
class without the Namespace prefix.Alternatively you can just call:
But it's best practice to put it at the top in a
use
statement as you can then see all the file's dependencies without having to scan the code.Once that's done you need to them run
composer dump-autoload
to update Composer's autoload function to take into account your newly added Classes.Remember, if you want to access the FileController via a URL then you'll need to define a route and specify the full namespace like so:
Which will direct all GET /file requests to the controller's
someMethod()
Take a look at the PHP documentation on Namespaces and Nettut's is always a good resource with this article