Autoloading a class in Symfony 2.1

symfony-2.1

Solution

For a simple case like this the quickest solution is creating a folder (for example `Common`) directly under `src` and put your class in it.

src
  -- Common
    -- Tools.php

`Tools.php` contains your class with proper namespace, for example

<?php

namespace Common;

class Tools
{
    public static function slugify($string)
    {
        // ...
    }
}

Before calling your function do not forget the `use` statement

use Common\Tools;

// ...
Tools::slugify('my test string');

If you put your code under `src` following the proper folder structure and namespace as above, it will work without touching `app/autoload.php`.

Problem

I'm porting a Symfony 1.2 project to Symfony 2.x. I'm currently running the latest 2.1.0-dev release. From my old project I have a class called Tools which has some simple functions for things like munging arrays into strings and generating slugs from strings. I'd like to use this class in my new project but I'm unclear how to use this class outside of a bundle. I've looked at various answers here which recommend changing app/autoload.php but my autoload.php looks different to the ones in the answers, maybe something has changed here between 2.0 and 2.1. I'd like to keep my class in my src or app directories as they're under source control. My vendors directory isn't as I'm using composer to take care of that. Any advice would be appreciated here.

Original source