初心者にもわかるCodeIgniter 其の二【coreとviewsとlibraries】

2016年6月15日 10:41
前回に引き続き、CodeIgniter。
今回はフレームワークを使いこなすうえで便利な設定と、それを利用したviewの便利な書き方を行います。
見よう見真似でそれなりのものになるので、やってみて下さい。

この記事は最終更新日から1年以上が経過しています。

core/MY_Controller.php

MY_Controller.phpというのは、複数のコントローラーに跨って処理を行うことができるという、親コントローラーと言うべきもので
小規模サイトだったとしても、念のために用意しておいて損はないです。

application/core/MY_Controller.php を作成

<?php
class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
	
	$this->load->library(array('parser','form_validation','pagination','user_agent'));
	$this->load->helper(array('form','url','array','file','cookie'));

    }
}
?>

作成した際にLoadされているライブラリーやヘルパーがありますが、中には必要のないものもあるかもしれません。
サイトが出来上がってから、いらないものを削除するのもありかと思います。
とりあえず、今は読み込んでおきます。
各ファイルの用途はおいおい説明するかと思います。

MY_Controllerの利用

MY_Controllerは作成しただけでは使えるようにはなりません。
各コントローラーの記述が必要になります。

application/controllers/Top.php を編集

class Top extends CI_Controller {
↓
class Top extends MY_Controller {

以上でマイコントローラーの利用が可能になります。

自作ライブラリの追加

ライブラリとは、よく使う処理をショートカットとして登録しておくもの、というのが私の認識です。
例を見せたほうが早いので、以下をご覧ください。

application/libraries/Lib.php を作成

<?php
class Lib {
	private $ci;
	public function __construct() {
		$this->ci = get_instance();
	}
		
	//文字数短縮
	/**
		* @param string $str 入力文字
		* @param int $length 最大文字数
		* @param string $append 省略時に追加する文字列
		*/
	public function mySubstr($str, $length=20, $append="...", $link=NULL) {
		if (mb_strlen($str) > $length) {
			$str = mb_substr($str, 0, $length, 'UTF-8');
				
			//リンクがあった場合
			if($link){
				$append = '<a class="text-small read_more" href="'.$link.'">['.$append.']</a>';
			}
			return $str .  $append;
		}
		
		return $str;
	}
}
?>

作成したライブラリは、必ず読み込む必要があります。
application/core/MY_Controller.php を編集

//ライブラリ読み込みの箇所に「lib」を追加
$this->load->library(array('parser','form_validation','pagination','user_agent','lib'));

自分流によく使う処理を追加しました。
では、mySubstrという処理をviewで呼び出してみましょう。

Viewの便利な書き方

HTMLとPHPの違いとして、共通パーツが利用できるかできないかが、自分にとっては一番大きいと思います。
HTMLで作られたサイトがあったとして、複数ページに渡るものだった場合、そのページ分だけヘッダーやサイドカラム、フッターが必要になります。
記述はすべて同じでも、全部のHTMLに同じように記述しなければいけない。
これはものすごく負担です。

あとで修正するときに、全ページ修正を入れなければいけないというのも、誠に馬鹿々々しい。
こういう経緯があって、いつしかwordpressの利用率があがったということなのでしょうが、それは今回は関係ありません。

では、上記を受けて基礎的なviewの書き方をします。

application/views/i/header.php を作成
ディレクトリの整理のため、共通パーツはapplication/views/i/ディレクトリに作成していきます。

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>TEST</title>
</head>
<body>

application/views/i/footer.php を作成

	<footer>
		<div class="copyright">Copyright © TEST. All Rights Reserved.</div><!-- /.copyright -->
	</footer>
</body>
</html>

application/views/index.php を編集

<?php include("i/header.php");?>
<div id="container">
	<h1>メインカラム</h1>
</div>
<?php include("i/footer.php"); ?>

これで、ヘッダーとフッターが共通化できました。

View内でのライブラリの利用

では、先程作成したライブラリを利用してみましょう。
わかりやすく、以下の記述を真似してください。

application/views/index.php に追加

<p>
<?php 
	$text = '123456789012345678901234567890123456789012345678901234567890';
	echo $this->lib->mySubstr($text,20,'....もっと読む','#');
?>
</p>

よく一覧ページ等で利用される文字列の省略ですね。
本来はPHP独自関数のmb_strlenが利用されるところですが、
省略されている場合はリンクを突けたしたり、省略文字を指定したり、自分なりの処理がしたいところなので、このように自作して呼び出すということです。

ライブラリの呼び出し方法は
$this->ライブラリ名(小文字)->function名();
という書き方で呼び出せます。

次回はそれぞれの機能を利用してサイトの作成を行います。
初心者にもわかるCodeIgniter 其の三【controllersとviewsで変数の受け渡しとサイト作成】

ブログ運営

株式会社ちょもらんま

https://qomolangma.jp