Namespacing is pretty easy once you get that hang of it.
Take the following example:
app/models/File.php
namespace AppModels;
class File {
public function someMethodThatGetsFiles()
{
}
}
app/controllers/FileController.php
namespace AppControllers;
use AppModelsFile;
class FileController {
public function someMethod()
{
$file = new File();
}
}
Declare the Namespace:
namespace AppControllers;
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:
use AppModelsFile;
This Allows you to then use the File
class without the Namespace prefix.
Alternatively you can just call:
$file = new AppModelsFile();
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:
Route::get('file', 'App\Controllers\FileController@someMethod');
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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…