CodeIgniterの基本

こんにちはー!むちょこです。

今回は、私が一番好きなフレームワークのCodeIgniterについて、基本的な機能を中心にご紹介していきたいと思います。

これからCodeIgniterを触る方向けが、サクッと事前知識を得られるように書いてみました。お役に立てたら嬉しいです:)

※最新はCodeIgniter4ですが、今年の2月に出たばかりでまだあまり普及していないためCodeIgniter3を前提にお話します。

公式サイト

https://codeigniter.com/

CodeIgniterの特徴

CodeIginiterは、軽量・軽量・簡単の三拍子そろったフルスタックフレームワークです!さらに思い通りのカスタマイズがしやすいので、初学者の方の勉強向けにも熟練者の方の商業開発にもオススメです。

高速

以前はPHPフレームワークの中で最速のパフォーマンスを誇り、現在でも上位に位置しています。

見てください。この自信満々の煽り……これ公式です。好き。

Really fast. We challenge you to find a framework that has better performance than CodeIgniter.

https://codeigniter.com/userguide3/overview/at_a_glance.html

日本語訳

非常に速いです。CodeIgniter よりもすぐれたパフォーマンスのフレームワークを探せる というなら、ぜひ探してみてください。

https://codeigniter.jp/user_guide/3/overview/at_a_glance.html

軽量

CodeIgniter3はユーザガイド込みで2MB、最新のCodeIgniter4はユーザガイドを除いて1.2MBしかないそうです。

えっ信じられますか?フルスタックフレームワークですよ……?

コアのシステムは最小限に抑え、他は追加可能なライブラリとすることでここまでの軽量化を実現しているようです。

簡単

CodeIgniter独自の仕様が少なく規則も緩いため、学習コストが非常に低いです。

また、ドキュメントが充実していることやコマンドラインを使わずに開発できることも初学者の方でも取っつきやすい要因になっています。

カスタマイズがしやすい

CodeIgniterのシステムは疎結合な(コンポーネント同士の依存度が低く、それぞれが独立して利用できるようになっているので柔軟性が高い)作りになっているため、開発者の思い通りにシステムを構築することが可能です。

MVCモデル

CodeIgniterはMVCモデルを採用しています。ただし、緩いのでModelは不要であれば使わなくても大丈夫です。

CodeIgniterのルーティング規則

CodeIgniterには、デフォルトのルーティング規則が用意されています。

http://example.com/[コントローラクラス]/[コントローラメソッド]/[引数]https://codeigniter.jp/user_guide/3/tutorial/static_pages.html

例えば、Userコントローラのshow()メソッドに引数として$idを渡して呼び出したければ、こんな感じのURLになります。

https://example.com/User/show/123

<?php
class User extends CI_Controller {
    public function show($id)
    {
        // このメソッドが呼ばれます
    }
}

独自のルーティング規則を使いたい場合は、application/config/routes.phpに設定を追加すればOKです。

CodeIgniterのディレクトリ構成

CodeIgniterのディレクトリのうち、CodeIgniterの開発者全員が把握しておいた方が良いものを厳選しました✨

ディレクトリ構成
application
          ├── config
          ├── controllers
          ├── language
          ├── logs
          ├── models
          └── views

config

データベースやルーティング、定数などの全体に関わる設定関連のファイルが格納されているディレクトリです。

controllers

Controllerクラスを格納するためのディレクトリです。ControllerはHTTPリクエストを処理する中心的なクラス群で、開発時に最もよく使うディレクトリのうちの1つになるかと思います。

https://codeigniter.jp/user_guide/3/general/controllers.html

language

言語クラスを格納するためのディレクトリです。サービスを多言語対応するときに必要になります。

https://codeigniter.jp/user_guide/3/libraries/language.html

logs

ログが出力されるディレクトリです。運用中もよくお世話になります。

models

Modelクラスを格納するディレクトリです。Modelクラスには、例えばデータベースの操作を行うメソッドを書いたりします。

https://codeigniter.jp/user_guide/3/general/models.html

views

表示するページやページの部品を格納するディレクトリです。Controllerから呼び出したり、他のViewから呼び出して使います。

https://codeigniter.jp/user_guide/3/general/views.html