初心者にもわかるCodeIgniter 其の二【coreとviewsとlibraries】
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で変数の受け渡しとサイト作成】