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から若干外れる
ので嫌と言う人もいるかもしれません、やりすぎるとコードがカオス
になるので気を付けましょう(汗)