Controllers
A controller is used to manage the logic for a part of your application. Most commonly, controllers are used to manage the logic for a single model. For example, if you were building a site for an online bakery, you might have a RecipesController and a IngredientsController managing your recipes and their ingredients. In CakePHP, controllers are named after the model they handle, in plural form.
The Recipe model is handled by the RecipesController, the Product model is handled by the ProductsController, and so on.
Your application's controllers are classes that extend the CakePHP AppController class, which in turn extends a core Controller class. The AppController class can be defined in /app/app_controller.php and it should contain methods that are shared between all of your application’s controllers. It extends the Controller class which is a standard CakePHP library.
Controllers can include any number of methods which are usually referred to as actions. Actions are controller methods used to display views. An action is a single method of a controller. CakePHP’s dispatcher calls actions when an incoming request matches a URL to a controller’s action. Returning to our online bakery example, our RecipesController might contain the view(), share(), and search() actions.
Components
Components are special packaged bundles of code that add additional functionality to controllers. These bundles can be shared across all controllers and can be even added to the base class AppController.
Using the foundation framework of CakePHP, ModelBaker can add the default or your custom components to your project with a simple checkbox. The following built-in components are included to aid your in your web app: Security, Sessions, Access control lists, Emails, Cookies, Authentication and Request handling.