生涯未熟

生涯未熟

プログラミングをちょこちょこと。

PHPフレームワーク「ちいたん」を読む

PHPフレームワークの中でも「ちいたん」は小さくて読みやすいと聞いたので、
読んでPHPレベルを上げていこうかと。


ちなみにPHP初心者なので、ごくごく初歩的なとこも含めて解説等入れていきます。



ちいたんとは?

ちいたんは世界最軽量のPHPフレームワークで、
ちいたんという名前は製作者の奥様の愛称からつけられたようです。


公式サイトはこちら
http://php.cheetan.net/

ちいたんを読んでいこう!

ちいたんは以下の様なファイル構成になっています。

- boot.php
- cheetan.php
- controller.php
- databases.php
- db
- common.php
- mysql.php
- pgsql.php
- textsql.php
- txtsql.php
- dispatch.php
- model.php
- object.php
- sanitize.php
- validate.php
- view.php

非常にスッキリしてますね。

ちいたんではまず、cheetan.phpをインクルードするところから始まります。
以下の様な感じ。

<?php
    require_once 'cheetan.php';
?>


ふむ、まずはcheetan.phpを読んでみましょうか。

<?php
/*-----------------------------------------------------------------------------
cheetan is licensed under the MIT license.
copyright (c) 2006 cheetan all right reserved.
http://php.cheetan.net/
-----------------------------------------------------------------------------*/
  if( !defined( "LIBDIR" ) ) 
  {
    define( "LIBDIR", dirname(__FILE__) );
  }
  
  require_once LIBDIR . DIRECTORY_SEPARATOR . "boot.php";
  
  $data   = array();
  $sanitize = new CSanitize();
  $s      = $sanitize;

  $dispatch = new CDispatch();
  $controller = $dispatch->dispatch( $data );
  $c      = &$controller;
?>


細かくブロックごとに分けて見てみましょうー。

  if( !defined( "LIBDIR" ) ) 
  {
    define( "LIBDIR", dirname(__FILE__) );
  }

これはLIBDIRという定数が存在するかどうかチェックしてるんですねー。
definedという関数が存在チェックのための関数になります。

で、LIBDIRが存在しなかった場合は、cheetan.phpの存在するディレクトリを値として持つLIBDIRを
定数として宣言します。



次に、ファイルを読み込んでいるところ。

require_once LIBDIR . DIRECTORY_SEPARATOR . "boot.php";

これは先ほど定数として宣言したLIBDIRにDIRECTORY_SEPARATORという定義済み定数とboot.phpという文言を.(ドット)でつなげることで、boot.phpというファイルを読み込んでいます。

DIRECTORY_SEPARATORはOSによって異なるファイルパスの区切りを、
使用するOSの形に合わせて値を持っている定数になります。
例えば、Windowsなら\で、Unixなら/といった形ですね。

boot.phpについては後ほど見てみましょう。

次は、変数の宣言。

  $data   = array();
  $sanitize = new CSanitize();
  $s      = $sanitize;

  $dispatch = new CDispatch();
  $controller = $dispatch->dispatch( $data );
  $c      = &$controller;

単純にインスタンス生成をしたりしてますね。
ここでわからなかったのは2つ。

  $sanitize = new CSanitize();
  $s      = $sanitize;

  $controller = $dispatch->dispatch( $data );
  $c      = &$controller;

です。

まず、1つ目は何故インスタンス生成して格納している変数を、
更に別の名称の変数に格納しているのか謎。
誰か教えちくり〜。

で、2つ目は&(アンパサンド)を使った、俗にいう参照渡しみたいですね。
ここが一番分かりやすい説明してました。


ってなわけで、cheetan.phpはちいたんを使うための前準備をしているファイルになるのですねー。

次回はboot.phpについて読んでいきます。




PHPエンジニア養成読本 〔現場で役立つイマドキ開発ノウハウ満載! 〕 (Software Design plus)
新原 雅司 原田 康生 小山 哲志 田中 久輝 保科 一成 大村 創太郎 増永 玲
技術評論社
売り上げランキング: 2,023