# Executing Controllers

SA3's command line tool offers an interface into the controller methods of an application's modules. This allows developers to execute code through *external scripts* or *direct CLI* commands.

```
php app.php -c=executeController -e=environment -a={controller}@{method}
```

### By Example

```php
<?php
namespace sa\Members;
​
use \sa\application\controller;
​
class MembersExport extends controller {
    public function exportToCsv() {
        // <implementation code>
    }
}
```

The CLI command to execute `exportToCsv` method is

```
php app.php -c=executeController -e=environment -a=MembersExport@exportToCsv
```

#### Duplicate controller names?

The previous command will execute the `exportToCsv` method found in the `MembersController` controller. For simple applications, this will suffice, but what if there are two controllers named `MembersController`?

You can specify a namespace to distinguish one controller from another.

```
php app.php -c=executeController -e=environment -a=\sa\Members\MembersExport@exportToCsv
```
