CodeIgniter読書会@東京があるらしい!

CodeIgniter徹底入門

OSC2009 Nagoyaで第一回CodeIgniter読書会が開催されましたが、東京でも開催されるようです。
このまま各地で広がっていくのかな?と期待デス♪

http://groups.google.co.jp/group/codeigniter-reading/web/codeigniter–1

以下上記URLより参照

日時
2009年9月4日(金) 19:00〜21:00
場所
CafeMiyama渋谷東口駅前店 会議室 5号室

主な対象
PHPフレームワークに興味がある人。PHPフレームワークを覚えたい人。PHP初心者でも構いません。PHPに関する雑誌や本を書いている人、フレームワークを作ってます、というような人は主な対象ではありませんので、サポートする側にまわってください。

参加資格
この Googleグループに参加していること。

CodeIgniter 読書会

CodeIgniter徹底入門

http://www.ospn.jp/osc2009-nagoya/modules/eguide/event.php?eid=29

CodeIgniter徹底入門の読書会が開催されるそうです。
去年のOSC名古屋にはお邪魔させていただいたのですが、今年は断念(><)

CodeIgniterの勉強をするため、私もこの本のお世話になりました。
やっと少し手に馴染んできて、
フレームワークっていいなぁと思うことができるようになりました。
背中を教えくださった本なので、参加できないのはとても(><)

osc2009名古屋より参照

担当者 ytooyama 登録日時 2009-07-13 15:37 (249 ヒット)

講師:安藤建一
担当:日本CodeIgniterユーザ会
対象者:PHPフレームワークを始めようと考えられている方々。
カテゴリ:CMS/フレームワーク

PHPフレームワーク「CodeIgniter」の解説書である
『CodeIgniter徹底入門』http://codeigniter.jp/tettei/
の読書会(第1回)を行います。

『CodeIgniter徹底入門』と Note PC をご持参ください。

参加される方は、以下の Googleグループに登録をお願いします。
http://groups.google.co.jp/group/codeigniter-reading

メモ r1190 MYNETS_url_helper.php

MyNETS2

MYNETS_url_helper.phpをr1190へ更新。
ちょいエラーが出るので、331行目を修正

function auto_link_callback($matches)

↓TRUEでも良かったとは思うんだけど、全部ポップアップはめんどくさいので。

function auto_link_callback($matches,$popup=FALSE)

追記:2009.08.22

http://usagi-project.org/redmine/repositories/diff/mynets2?rev=1195

preg_replace_callback でコールバック関数に $popup を渡せないのでということで、Class化されたらしい。
class Auto_link になってた。
後でファイルを入れ替えておこう。
・・・・テスト書かないとだめだなぁやっぱり(><)

メモ MyNETS2 モジュールの情報を取得

MyNETS2

とりあえずメモ。
モジュール名とか、知りたい時は$this->matchbox;をつつくと良い気がする。

var_dump($this->matchbox);

モジュール名htmlの場合での結果。

object(CI_Matchbox)[6]
  public '_callers' => 
    array
      0 => string 'Loader' (length=6)
      1 => string 'Matchbox' (length=8)
      2 => string 'MY_Config' (length=9)
      3 => string 'MY_Language' (length=11)
      4 => string 'Parser' (length=6)
  public '_directories' => 
    array
      0 => string 'modules' (length=7)
  public '_directory' => string 'modules/' (length=8)
  public '_module' => string 'html/' (length=5)

追記2009.09.10
__FUNCTION__ で現在実行しているメソッド名を取得できる・・・・メモ〆(。。)

[メモ]MyNETS2で開発。

MyNETS2

まずはSKINまわりから。

今搭載されてる構造を変更。
ベースとなるCSSファイル+画像ファイルをdefaultとして設置する。
モジュールごとにCSSファイルを設置

モジュールのCSSファイルに、ベースとなるCSSを読み込ませて基本となるCSSの設定にする。
テーマごとに、フォルダを切り替えたりなんてことも考えたんだけど、
ZIPファイルでテーマファイルを別の場所に保存しておいて、/theme/になるように展開したり、
管理機能からCSSを編集したり、フォルダごとzipに固めてバックアップをとったりできるとよさげだなと思ったので、/theme/以下に1テーマってことにしてみる。

基本SKIN

/theme/default/main.css
/theme/default/css/xxxx.css
/theme/default/images/xxxxx.jpg

モジュール別のスキン

/theme/{モジュール名}/css/main.css
/theme/{モジュール名}/css/xxx.css
/theme/{モジュール名}/images/xxxx.jpg

/theme/{モジュール名}/css/main.cssの中身はこんな感じ

@charset "utf-8";
/* CSS Document */

/*基本CSSを取得
--------------------------------*/
@import url("../default/main.css");

…以下cssフォルダの中のパーツ分けしたCSSファイルを順次import
1モジュール毎にCSSを設定。
基本となるSKINの情報はdefaultから取得する

共通部品のjavascript、javascriptライブラリ等

/shared/js/xxxx.js等
/shared/js/{ライブラリ名}/パーツ

ざっくりとしたCSS用の図
css1.jpg

testing

ヘッダフッタおよび基本的な部分の設定をして、とりあえずの作業を終了。
kunitsujiさんからコーディング規約の資料を教えていただいたので、コーディング規約に沿うように、コードを整頓。
そろそろ個人用のナンデモSVNからMyNETS2用のSVNに独立させるべきかな・・・・・

メモ:

  • MyNETS2 r766がベース。
  • 一応3カラムの構造も用意したが、2カラムが良さそう。
  • bbsとdiaryはまだ入れ物だけのようなので削除
  • 携帯ページと同時にすすめていきたいので、Viewの書き方、controllerの書き方を模索
  • 会員の新規登録あたりを充実させる
  • どの程度の粒度でモジュールにするか、コントローラで分けるかを考える

[メモ]今日のMyNETS2でCIUnit

MyNETS2

modules以下のmodel,library,helperのテストが、CIUnitでできるようになりました。
modules以下のControllerとviewはまだphpunitが実行できる状態にまで辿りつけていません。

adminモジュールのModel_adminで、少しはまりました。

$this->_user_id = $this->CI->session->userdata('user_id');

の処理を通過させるために、setUp()の中で、次のコードの記入が必要でした。

adminモジュールのModel_adminの31行目
$this->CI->session->userdata(‘user_id’);で、user_idを渡している箇所のために、記載。
ひょっとしたらsessionではなく違うカタチでuser_idを渡せれば、もっと良いのかも。

$this->CI->load->file(APPPATH.'libraries/session/MYNETS_Session.php');
$this->CI->session = new MYNETS_Session;

実行をすると次のように表示されます。
Warningは出ますが、テストは実行できます。

$ phpunit testSomeModel.php 

PHPUnit 3.3.16 by Sebastian Bergmann.

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /usr/share/pear/PHPUnit/Util/Printer.php:168)</p>
<p>Filename: libraries/Session.php</p>
<p>Line Number: 663</p>

</div>.

Time: 0 seconds

OK (1 test, 0 assertions)

追記:2009.06.12 3:19
modules以下のcontrollerはとりあえず諦めようかなという気分です。
APPPATH.controller/以下のcontrotterもOUTPUTがあるかどうかのテストだけみたいだし・・・(言い訳)

modulesのmodelのテストで、

$this->_user_id = $this->CI->session->userdata('user_id');

が使われている場合の処理について、前回のやり方だと、AllTests.phpの実行時にエラーが発生するので、次のように修正。

if(!isset($this->CI->session)){
    $this->CI->load->file(APPPATH.'libraries/session/MYNETS_Session.php');
    $this->CI->session = new MYNETS_Session;
}
$this->CI->session->userdata('1');

なんだかもう少しな気がしてきたよ。

[メモ]CodeIgniterの情報を検索してみる

CodeIgnigter

まだまだ勉強不足の自分自身のために、検索結果をメモ〆(。。)
まだまだ使い切れてないなぁを自覚中。

MyNETS2のモジュールになることによってファイルが切り分けられて見通しがとても良くなる仕組みはとても素敵だけれども、CodeIgniter本体のバージョンアップに対しても自力で対応できるようにまでなりたい。
がんばらねばデス。

DBの設定等の盲点
http://blog.promob.jp/fri/2009/04/codeigniter-2.html

codeigniterとxajaxの話題
http://hain.jp/index.php/tech-j/2006/07/24/p29
xajaxというのは使ったことないのだけども、
以前にさわったcakephp1.1よりもCodeIgniter1.7.0のほうがajaxやjavascriptを組み込みやすかったように思う。
ただ、cakephpも半年ぐらいしか触ったことが無いので、言い切ってしまってよいかどうかはわからない・・・(汗

twitter @CodeIgniter
http://twitter.com/CodeIgniter
いまさらながらフォローをしました♪

CIUnitで素の状態のCodeIgniterに対してはテストが行えるようになりました。
ただ、MyNETS2に対してのソレは、MyNETS2の特徴とも言える携帯対応の部分をコメントアウトしたと、内部を壊しつつの対応で、やっとのことmodules以外のテストが出来るようになっただけです。
基本的なことがわかっていないので、modules以下をどうテストを書いてよいかがわからない。
CIUnitは本当に良く出来ていて、Controllreのテスト、modulesのテストととても書きやすくできています。
modulesでも同等にわかりやすく書けるべきで、それがどうやれば実装できるのか・・・・・

現状のMyNETS2でCIUnit

MyNETS2

今現在の状況で言えば、
modules以下の本当にテストをしたい箇所がテストが出来ませんが、
動くところまでもっていくことができました。

ただ、MyNETS2のコードを書き換えての対応なので、
あまりよくない対応です。

Loader.phpのモバイルかどうかを判定して、
モバイル用のviewファイルがあれば、
そっちをとりにいく処理を
コメントアウトして動かしてます・・・・orz

あきらめずにコードを追いたいと思います。

追記:2009.06.07
CodeIgniterの話題とMyNETS2(アプリケーションプラットフォーム)との話題の差がわかりにくいので画像を作成してみました。MyNETS2の話題に関してはしばらくこれを使おうかなと思います。

さらに追記:2009.06.07 17:36
コメントアウトした部分は、携帯からのアクセスの場合、携帯用のviewフォルダにファイルがあればそっちを読むべし的な処理部分でした。1つのコントローラが、件数の表示を切り替えるにしても同じコントローラを使う場合使わない場合もありそうなので、コメントアウトのままでもいいかもしれないと思い始めています。・・・・でもやっぱりあったほうがいいのかなぁ・・・・(汗)