Where to place a custom PHP class in CakePHP 3?

From my point of view, you can reuse any own class and also any third parties class as a utility class. If so, then you can place the class into src/Utility folder. Please use the proper namespace. After that, you can use that class anywhere in CakPHP 3.x.

HOW TO PLACE:

Say, you have a class named Jorge, save it into src/Utility folder using file name Jorge.php. Put namespace App\Utility; statement top of your Jorge.php file.

HOW TO USE:

In the file where you want to use this class, just put use App\Utility\Jorge;. After that, you can call the class into that file.

ALTERNATIVE SOLUTION:

If you have a third party package of many classes, then you can follow https://stackoverflow.com/a/28527683/1787600


Most CakePHP derived code that you'd create will fall under the structure outlined by the documentation.

http://book.cakephp.org/3.0/en/intro/cakephp-folder-structure.html

For "totally arbitrary utility classes" as I'm guessing your meaning, CakePHP treats those as "third-party dependencies" (conceptually) and they recommend putting them in the "vendors" folder. You can ignore their recommendation to not edit things in that folder when the new content is your own utility project.

For loading, use good old php's require family of functions.

http://book.cakephp.org/3.0/en/core-libraries/app.html

If you happen to not be using Composer in your application, you will need to manually load all vendor libraries yourself.

You can make use of CakePHP global constants/functions to build the paths needed for require.

http://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html

APP, APP_DIR, WWW_ROOT, etc.