カテゴリー: CodeIgniter

CodeIgniter2.x 系のバッチとして呼び出し について訂正

投稿者:isc_blog

先日、CodeIgniterをバッチとして呼び出せるようにしたいという記事の中で cron.php を使って・・・という説明を展開したのですが、CodeIgniter2.X系ではもっと簡単な方法があることがわかりましたので訂正させてください。

CodeIgniter 日本語版のユーザガイド(ここではver.2.0.3)の記事がありました。
↓↓

CLI からの実行 : CodeIgniter ユーザガイド 日本語版.

こちらの説明を引用させてください。
[php]
<?php
class Tools extends CI_Controller {

public function message($to = ‘World’)
{
echo "Hello {$to}!".PHP_EOL;
}
}
?>
[/php]
このようなコードをtools.php というファイル名で
application/controllers に保存します。

ブラウザからは
http://example.com/index.php/tools/message
というURLで呼び出せます。

結果は
「Hello World!」と表示されます。

これをターミナル(コマンドプロンプト)から呼び出す方法が下記の通りです。

[java]
$ cd /path/to/project
$ php index.php tools message
[/java]
これで
[java]
$ Hello World!
[/java]
と表示されます。

[java]
$ php index.php tools message "John Smith"
[/java]
URL の引数と同じように引数を渡すことができます。”John Smith” を引数として渡すことで、次のように表示されます。
[java]
$ Hello John Smith!.
[/java]

・・・これだけでした。
前回の記事は全部訂正です。
すみません。

2012年1月19日

CodeIgniterでの開発時に有用なデバッグ情報出力と実装方法

投稿者:isc_blog

CodeIgniterには開発中に便利なデバッグ機能として
出力クラスに「アプリケーションのプロファイリング」結果を出力する機能があります。

やり方はcontrollerクラス内に下記の一文を追記するだけ。

$this->output->enable_profiler(TRUE);

参考:アプリケーションのプロファイリング|
CodeIgniter ユーザガイド 日本語版 Version 2.0.3

上記参考ページ内に「プロファイラセクションの有効化と無効化」みたいな説明もあってなかなか優れものだということがわかります。

ただ、これってアプリケーション開発してる時にはコード内に記述しちゃって納品時(正式運用時)に消して出すとかコード内に残っちゃってるのがちょっと気になるといえば気になるところ・・・

で、解決方法例が載っている記事がありました↓↓
CodeIgniterの学習 16 – 開発時にプロファイラを有効にし情報を表示する – ヌル日記

こちらの記事内容通りにやればすんなりconfig.phpにて管理出来るようになります。
バージョン的には同記事の日付が2008年なことを考えるとCodeIgniter1.6か7から2.1までそのまま大丈夫そうです。
(私の環境は2.0.3)

例:こんな感じに出力されて便利です!

CodeIgniter_enable_profiler

CodeIgniterで$this->output->enable_profiler(TRUE)にしたところ

2011年11月3日

CodeIgniterをバッチとして呼び出せるようにしたい

投稿者:isc_blog

こちらの記事は CodeIgniter2.x系よりも前のことになるようです。
CodeIgniter2.x系をご利用の方は
こちらの記事をご覧ください。
CodeIgniter2.x 系のバッチとして呼び出し について訂正

(さらに…)

2011年10月4日

CIUnit導入~

投稿者:isc_blog

CodeIgniterで開発中にPHPUnitでテストしてみようと思ったら
CIUnitっていうツールがあってそれでテストする・・・っていう感じらしいので

先日PHPUnitを入れた前提で検索してみたところ
CIUnitをインストールする方法が書いてあった記事がありました。

CodeIgniter2.0.3にPHPUnit/CIUnit をインストールする| A Day in Serenity @ kenji

この記事のとおりCIUnit自体は現在CodeIgniter1.7で止まっているので2.0以上用に改造してあるのですごく助かりました!

2011年9月23日

CodeIgniter2.0.3日本語言語パック リリースされました

投稿者:isc_blog

本日、2011年9月5日日本CodeIgniterユーザ会により
日本語言語パック(CodeIgniter2.0.3)がリリースされました。

CodeIgniter 2.0.3 は、マイナーバージョンアップです。セキュリティ修正、および、いくつかの機能追加とバグ修正が含まれています。

変更点は、ユーザガイドの変更履歴 をご覧ください。

とのことですので詳細はご確認ください。

今回のプロジェクトではこのCodeIgniter2.0.3を使用します!

2011年9月5日

CodeIgniterのすすめ Active Recordクラス

投稿者:isc_blog

CodeIgniterについて何度かご紹介してきていますが
ここんとこSeasar2(Javaのフレームワーク。個人的にはJavaのフレームワークの中で一番好きかな。)っぽいなぁ~と思ったActive Recordクラスについて
ご紹介します。

Seasar2の中でもS2JDBCっていうSeasar2のO/Rマッパーで・・・
っていうか
まぁ、百聞は一見にしかず・・・ってことでこんなコードでDB検索を可能にしています。
[java]
List<Employee> results = jdbcManager.from(Employee.class)
.join("department")
.where("id in (? , ?)", 11, 22)
.orderBy("name")
.getResultList();
[/java]
これって実際のSQLは・・・・こんな感じ
[sql]
select T1_.ID, T1_.NAME, T1.DEPARTMENT_ID, T2_.ID, T2_.NAME
from EMPLOYEE T1_ left outer join DEPARTMENT T2_ on T1_.DEPARTMENT_ID = T2_.ID
where T1_.ID in (?, ?)
order by T1_.NAME desc
[/sql]
※SQL文内の「?」に 「11」「12」が入ってくる感じです。

これをCodeIgniterのActive Recordクラスで書くと・・・
[php]
$this->db->select(‘employee.id,employee.name,employee.department_id,department.id,department.name’);
$this->db->from(‘employee’);
$this->db->join(‘department’, ‘department.id = employee.id’,’left’);
$this->db->where_in(‘id’, array(’11’,’12’));
$this->db->order_by("employee.name", "desc");
$query = $this->db->get();
[/php]
こんな感じ(間違ってたらごめんなさい)
もしかしたらCodeIgniterの方が直感的かもしれない。

どちらももっと複雑なSQLの場合は直接SQL文節をかけちゃう
「S2JDBC」
[java]
List<Employee> results = (List<Employee>) entityManager.createQuery(
"select e from Employee e left join fetch e.department" +
" where e.id in (?1, ?2) order by e.name")
.setParameter(1, 11)
.setParameter(2, 22)
.getResultList();
[/java]

「CodeIgniter」
[php]
$this->db->select(‘(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4′) AS amount_paid’, FALSE);
$query = $this->db->get(‘mytable’);
[/php]

フレームワークを導入したせいでガチガチでどうしようもなくなる(またはフレームワークのせいでSQL構文を合わせないといけない・・・)というフレームワークではつかれるので、こういうところは柔軟であってほしい。

やはりいいフレームワークだと思います。

久々に書いたけどS2JDBCも強力だなぁ~
Java書きたくなってきたー
※Androidは書いてるか・・・

2011年8月2日

今日の調べ物・・・

投稿者:isc_blog

Android開発で・・・・「赤外線」を使ったアプリを作りたかったので・・・調べた結果

SH Developers Square – download 赤外線データ転送API概要

JavaScriptにてIEの時は・・・と書きたかったので・・・・調べた結果

phpSpot開発日誌より
JavaScriptでIEかどうかをたったの1行で判別する方法

CodeIgniterのセッションクラス

今日はいろいろ立てこんでますw

2011年7月19日

CodeIgniter 機能拡張の注意点メモ

投稿者:isc_blog

CodeIgniter開発中に
既存のAPIで機能的に足りないのでいろいろ拡張することになるんですが
その際に「MY_」を付けます。

例えばForm_validationクラスを拡張してバリデーションにいろいろなバリエーション(w)をつけたい場合は
application/libraries/MY_Form_validation.php を作成してそのなかに
[php]
class MY_Form_validation extends CI_Form_validation {

/**
* Constructor
*/
public function __construct($rules = array())
{
parent::__construct($rules);
}

// ——————————————————————–

/**
* 電話番号チェック
*
* @access public
* @param string
* @return bool
*
*/
function phone($str)
{
if ($str == ”)
{
return TRUE;
}
return ( ! preg_match("/^\d{2,5}\-\d{1,4}\-\d{1,4}$/", $str)) ? FALSE : TRUE;
}
・・・
[/php]
こんな感じで作成します。

すると、CodeIgniterはこの「MY_」を付けたものを自動的に取り込んでくれて
あたかも Form_validationにあるかのように
[php]
$this->load->library(‘form_validation’);
[/php]
で読み込めて
[php]
$this->form_validation->set_rules(‘fax_no’, "FAX番号","trim|phone");
[/php]
みたいに使えるわけです。(上記の例は電話番号型になっているかチェックするルール設定です。)

しかし、今日それを「helper」でやろうと思って
application/helper/My_date_helper.php」を作成し・・・メソッドを書いて・・・
[php]
$this->load->helper(‘date’);
[/php]
も書いて・・・メソッドを呼ぶ処理を書きました。

・・・ダメ・・・使えてない・・・

ん~
どうなっているのかしばしソースチェック・・・
helperはクラスになっていなくてメソッドをそのまま書く感じになっているのでまた余計なことを考えて・・・・

結果、ファイル名が良くなかったみたいです。
My_date_helper.php」から 「MY_date_helper.php」 に変更したら・・・・

使えました!

解決するとなぁんだ!ってことなんですが。はまりそうでした。

2011年7月15日