【もう迷わない】プログラミングスクールをポイント別に紹介

第一回ギリギリユーザー定義関数選手権!実務で使えるLaravel

Laravelでユーザー定義関数について深く勉強したい…

こんな疑問を解決します。

この記事では、Laravelでユーザー定義関数について解説していきます。

Laravelのユーザー定義関数といってもベースの知識はPHPです。

教材風に解説するのは堅苦しいので、ユーザー定義関数選手権と題して気軽にみていきましょう!

本記事のゴール
  • ユーザー定義関数についてわかる

今回参考にした本:独習PHP 第4版

Contents

前提・準備

前提として、私は以下の環境で動作確認しております。

Docker 20.10.7
PHP 7.4.22
Laravel 8.53.1
mySQL 5.7
データベースのツール phpmyadmin

その上で、本を管理するアプリを想定し、コントローラーにユーザー定義関数を書いていく方針でこの記事を進めていきます。

なので、まずは手元に環境にLaravelで開発できる環境と適当にコントローラーを作成してください。

私は以下のようにBookControllerを作成してみました。

<?php

namespace App\Http\Controllers;

use App\Models\Book;
use Illuminate\Http\Request;

class BookController extends Controller
{
    /**
     * 一覧画面
     */
    public function index()
    {
     // 本の一覧データを取得
        $books = $this->book->findAllBooks(); // ←Book::all()を行なっています。
        return view('book.index', compact('books'));
    }
}

基本的な流れとしては、コントローラーにユーザー定義関数を定義する

ユーザー定義関数を呼び出したい場合は、$this->関数名でできます。
※$this->関数名はざっくり言えば、「このコントローラーのクラスの中にある関数名を呼び出せ!」って意味です。

そもそもユーザー定義関数ってなんなん?

ユーザー定義関数は、その名前の通り、「ユーザー自身が自分で関数を作ること」です。

PHPやLaravelにはin_array,array_keysなど組み込み関数などがありますが、それだけでは実装できないこともあるんですよね。

そんなときに、自分で関数をつくっちゃえば実現したいこと出来んじゃんってことで、ユーザー定義関数を作ります。

【Laravelユーザー定義関数】アマチュア選手①

消費税10%を加算する

<?php

namespace App\Http\Controllers;

use App\Models\Book;
use Illuminate\Http\Request;

class BookController extends Controller
{
    /**
     * 一覧画面
     */
    public function index()
    {
        $banana = 150;
        // バナナ150円に消費税10%を加算
        $taxBanana = $this->tax($banana);
        print_r($taxBanana); // 結果: 165円(税込)

     // 本の一覧データを取得
        $books = $this->book->findAllBooks(); // ←Book::all()を行なっています。
        return view('book.index', compact('books'));
    }

    /**
     * 消費税が10%だったときに商品に1.1をかけて税込価格にする
     * 
     * @param int $val 対象の商品の税抜き前の値段
     */
    public function tax($val)
    {
        return $val * 1.1. "円(税込)";
    }
}

【Laravelユーザー定義関数】アマチュア選手②

三角形の面積を求める

<?php

namespace App\Http\Controllers;

use App\Models\Book;
use Illuminate\Http\Request;

class BookController extends Controller
{
    /**
     * 一覧画面
     */
    public function index()
    {
        // 上辺
        $up_edge = 10;
        // 下辺
        $down_edge = 20;
        // 高さ
        $heigh = 5;
        // 台形の面積
        $answer = $this->getTrapezoidArea($up_edge, $down_edge, $heigh);
        print_r($answer); // 75

     // 本の一覧データを取得
        $books = $this->book->findAllBooks(); // ←Book::all()を行なっています。
        return view('book.index', compact('books'));
    }

    /**
     * 台形の面積を求める (上辺+下辺)*高さ/2
     */
    public function getTrapezoidArea($up_edge, $down_edge, $heigh)
    {
        return ($up_edge + $down_edge) * $heigh / 2;
    }
}

【Laravelユーザー定義関数】ルーキー

誕生日を判定

<?php

namespace App\Http\Controllers;

use App\Models\Book;
use Illuminate\Http\Request;

class BookController extends Controller
{
    /**
     * 一覧画面
     */
    public function index()
    {
        $my_birth_day = '09/19';
        // 誕生日か判定
        $check_birth_day = $this->getBirthDay($my_birth_day);
        print_r($check_birth_day); // 誕生日おめでとうございます!
        // 本の一覧データを取得
        $books = $this->book->findAllBooks();
        return view('book.index', compact('books'));
    }

    /**
     * 誕生日を判定
     * @param string $my_birth_day 誕生日
     */
    public function getBirthDay($my_birth_day)
    {
        $today = date('Y/m/d');

        if ($my_birth_day == $today) {
            return '誕生日おめでとうございます!';
        } else {
            return '誕生日ではありません。';
        }
    }
}

【Laravelユーザー定義関数】ルーキー②

forで繰り返しおはようを表示させる

<?php

namespace App\Http\Controllers;

use App\Models\Book;
use Illuminate\Http\Request;

class BookController extends Controller
{
    /**
     * 一覧画面
     */
    public function index()
    {
        $hoge = 'おはよう!';
        $num = 5;
        $checkHoges = $this->getGoodMorning($num, $hoge);
        print_r($checkHoges); //  おはよう!
                     おはよう!
                     おはよう!
                     おはよう!
                     おはよう!
        // 本の一覧データを取得
        $books = $this->book->findAllBooks();
        return view('book.index', compact('books'));
    }

    /**
     * おはようの繰り返し
     * @param int $num 繰り返す回数
     * @param stirng $hoge 繰り返す言葉
     */
    public function getGoodMorning($hoge, $num)
    {
        for ($i = 1; $i <= $num; $i++) {
            echo $hoge."<br>";
        }
        return $hoge;
    }
}

【Laravelユーザー定義関数】まとめ

ユーザー定義関数をいくつか紹介してみましたが、参考になったものはありますか?

この記事ではこれからもユーザー定義関数について情報を追加していくつもりなので、定期的にチェックしてくれると嬉しいです。

ユーザー定義関数には決まりはないので、自分でどんな実装を実現したいのか考えながら、アプリ制作や実務に生かしてくださいね!

もし、「こんなユーザー定義関数を紹介してほしい!」「こんなユーザー定義関数あるけどどう?」みたいな意見がありましたらコメントでお知らせください。

コメント

コメントする

CAPTCHA


Contents
閉じる