Edited at
CakePHP 3Day 12

CakePHP3で共通関数を作る方法

More than 3 years have passed since last update.


CakePHP3で共通関数を作る方法


はじめに

どこでも使える共通関数を作ってCakePHP3で使いたい!

どうしたらいいの?ってな時の使い方を紹介します。

ModelでもControllerでもViewでも使いたい、しかも楽に使いたいときの方法です。


手順


CakePHP3のroot配下にsrc/Utilsディレクトリを作成

/root

/bin
/config
/logs
/plugins
/src/Utils <-ココ
/tests
/tmp
/vendor
/webroot
.editorconfig
.gitignore
.htaccess
.travis.yml
composer.json
index.php
phpunit.xml.dist
README.md


src/Utils/にAppUtility.phpを作成

<?php

namespace App\Utils;

/**
* AppUtility.
*/
class AppUtility
{
/*
* function
*/
public static function add($val1, $val2){
return ($val1 + $val2);
}
}

namespaceの指定で作るのがポイント


Composerをupdateする

$ php composer.phar dump-autoload

これで、AppUtility.phpファイルが自動で読み込まれるようになります。


使い方


Modelで使う

<?php

namespace App\Model\Table;

use App\Utils\AppUtility;

/**
* User Model
*/
class UsersTable extends Table
{
/*
* function
*/
public function hoge()
{
$ans = AppUtility::add(5, 10);
}
}


Controllerで使う

<?php

namespace App\Controller;

use App\Utils\AppUtility;

/**
* Users Controller
*/
class UsersController extends AppController
{
/*
* function
*/
public function fuga()
{
$and = AppUtility::add(5, 10);
}
}


Viewで使う

<html>

<body>
<?= \App\src\Utils\AppUtility::add(5, 10)); ?>
</body>
<html>

このような方法で使うことができます。

Modelに属さない処理や、データの整形など好きに作ることができるので、共通関数等をサックリ作りたい時には便利かと思います。

ただ、便利は反面CakePHPから若干外れるので嫌と言う人もいるかもしれません、やりすぎるとコードがカオスになるので気を付けましょう(汗)