CakePHP 4 How To Create Custom Component Tutorial

Reading Time: 5 minutes
2,133 Views

Inside this article we will see CakePHP 4 How To Create Custom Component. This tutorial contains all basics about creating a custom component in cakephp application.

Components are those classes in which functions and methods are for to complete a specific task of application. In CakePHP there are many default components available as Flash, Auth, etc. To create a user defined component in cakephp we need to follow some basic steps.

We need custom component when we want to create some functions which we can re-use through out in the application. User defined Component classes are stored inside /src/Controller/Component folder.

Learn More –

Let’s get started.

CakePHP 4 Installation

To create a CakePHP project, run this command into your shell or terminal. Make sure composer should be installed in your system.

$ composer create-project --prefer-dist cakephp/app:~4.0 mycakephp

Above command will creates a project with the name called mycakephp.

Create Custom Component

Open project into terminal and run this cake console command into it.

$ bin/cake bake component Custom

It will create CustomComponent.php file inside /src/Controller/Component folder. Open up this file and write this following code into it.

<?php

declare(strict_types=1);

namespace App\Controller\Component;

use Cake\Controller\Component;
use Cake\Controller\ComponentRegistry;

/**
 * Custom component
 */
class CustomComponent extends Component
{
    /**
     * Default configuration.
     *
     * @var array
     */
    protected $_defaultConfig = [];

    // To add all array elements
    public function addArrayElements($numbers = array())
    {
        return array_sum($numbers);
    }

    // To reverse array elements
    public function reverseArrayElements($numbers = array())
    {
        return array_reverse($numbers);
    }
}

Now, we can use the methods of this custom component into application. Methods are – addArrayElements() and reverseArrayElements().

To use component first we need to load it. We have two options to load into cakephp application.

  • Load by using AppController.php (Global load to use anywhere inside application).
  • Load into Specific contoller to use specifically.

Load Custom Component

To load custom component we use loadComponent() method. Inside this method needs to pass component name.

Open AppController.php file from /src/Controller folder. We have loaded it inside initialize() method.

<?php

declare(strict_types=1);

namespace App\Controller;

use Cake\Controller\Controller;

class AppController extends Controller
{
    public function initialize(): void
    {
        parent::initialize();

        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');
        $this->loadComponent("Custom"); // Loading Custom Component
    }
}

Create Controller & Execute Application

Back to terminal and run this command.

$ bin/cake bake controller Site --no-actions

It will create SiteController.php inside /src/Controller folder. Open up this file and write this code into it.

<?php

declare(strict_types=1);

namespace App\Controller;

class SiteController extends AppController
{
    public function initialize(): void
    {
        parent::initialize();
        $this->autoRender = false;
    }

    public function sumNumbers()
    {
        // Use method of Custom component
        echo $this->Custom->addArrayElements([2, 5, 7, 8, 9]);
    }

    public function reverseNumbers()
    {
        // Use method of Custom component
        $reversedArray = $this->Custom->reverseArrayElements([805, 125, 461, 111, 321]);
        print_r($reversedArray);
    }
}

When we execute the above code,

Example #1

echo $this->Custom->addArrayElements([2, 5, 7, 8, 9]);

Returns // 31

Example #2

$reversedArray = $this->Custom->reverseArrayElements([805, 125, 461, 111, 321]);

Returns 
// Array ( [0] => 321 [1] => 111 [2] => 461 [3] => 125 [4] => 805 )

We hope this article helped you to learn about CakePHP 4 How To Create Custom Component Tutorial in a very detailed way.

Online Web Tutor invites you to try Skillshike! Learn CakePHP, Laravel, CodeIgniter, Node Js, MySQL, Authentication, RESTful Web Services, etc into a depth level. Master the Coding Skills to Become an Expert in PHP Web Development. So, Search your favourite course and enroll now.

If you liked this article, then please subscribe to our YouTube Channel for PHP & it’s framework, WordPress, Node Js video tutorials. You can also find us on Twitter and Facebook.

Sanjay KumarHello friends, I am Sanjay Kumar a Web Developer by profession. Additionally I'm also a Blogger, Youtuber by Passion. I founded Online Web Tutor and Skillshike platforms. By using these platforms I am sharing the valuable knowledge of Programming, Tips and Tricks, Programming Standards and more what I have with you all. Read more