Using Autoloader to map a class name to its file

Using Laravel’s ClassLoader, we can easily include any of our custom class libraries in our
code and have them readily available.
Getting ready
For this recipe, we need to set up a standard Laravel installation.

How to do it…

To complete this recipe, follow these steps:
1. In the Laravel /app directory, create a new directory named custom, which will hold
our custom classes.
2. In the custom directory, create a file named MyShapes.php and add this
simple code:
<?php
class MyShapes {
public function octagon()
{
return ‘I am an octagon’;
}
}

3. In the /app/start directory, open global.php and update ClassLoader so it
looks like this:
ClassLoader::addDirectories(array(
app_path().’/commands’,
app_path().’/controllers’,
app_path().’/models’,
app_path().’/database/seeds’,
app_path().’/custom’,
));
4. Now we can use that class in any part of our application. For example, if we
create a route:
Route::get(‘shape’, function()
{
$shape = new MyShapes;
return $shape->octagon();
});

How it works…

Most of the time, we will use Composer to add packages and libraries to our app. However,
there may be libraries that aren’t available through Composer or custom libraries that we want
to keep separate. To accomplish this, we need to dedicate a spot to hold our class libraries; in
this case, we create a directory named custom and put it in our app directory.
Then we add our class files, making sure the class names and filenames are the same. This
could either be classes we create ourselves or maybe even a legacy class that we need to use.
Finally, we add the directory to Laravel’s ClassLoader. When that’s complete, we’ll be able to
use those classes anywhere in our application.

Leave a Reply

Your email address will not be published. Required fields are marked *