One of the key goals of CakePHP 3 as discussed recently was making CakePHP 3 more decoupled. CakePHP 3 has achieved that goal very nicely. Take a look at the CakePHP organization’s repos on GitHub and you will find a long list of decoupled collections of classes that are all part of the overall CakePHP framework that can be used completely independently of CakePHP itself.

Perhaps you are interested in some of CakePHP’s utility classes, like the Security utility, which are a great resource for hashing and encrypting basic data (not passwords) that you want some amount of reasonable security applied to it. Or perhaps you are interested in CakePHP’s Validation system which provides for validating arbitrary arrays of data. The most complex and most interesting part of CakePHP 3 by far is even available for use independent of the rest of the CakePHP core, the ORM layer.

How about an example to help clarify how to use these different pieces in smaller projects. Let’s build a simple webpage that allows us to submit a contact form request and validate it using the CakePHP Validation Library.

I’m doing this in a new index.php file in a new directory. First we need to get the Validation Library in our directory.

$ composer require cakephp/validation

That creates a new composer.json and loads the CakePHP Validation package. Next in our index.php file we need to load the Composer autoloader and the CakePHP Validation Class.

namespace Loadsys\TestValidation;
require dirname(__FILE__) . "/vendor/autoload.php";
use Cake\Validation\Validator;

Now at this point we can create a new instance of the Validator class and validate arbitrary arrays of data, like what we would get from $_POST.

$validator = new Validator();
$validator
  ->requirePresence('name')
  ->notEmpty('name', 'Name is required to be submitted.');
$errors = $validator->errors($_POST);

I worked out a complete example of this and posted it on GitHub as a sample if you need more details or insight into using the CakePHP packages.

The overall CakePHP framework may not be the right choice for everyone in every case. With the recent decoupling of the framework in the 3.0 branch, CakePHP can be more easily used for those times when you want to pick either the very best packages for your problem or you only need a limited subset of features from CakePHP for your web application.