[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 10/16 04:44 / Filesize : 109 KB / Number-of Response : 474
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

[PHP][フレームワーク]CodeIgniterスレ



1 名前:nobodyさん mailto:sage [2007/04/27(金) 23:17:16 ID:???]
公式:www.codeigniter.com/
チュートリアル:codeigniter.com/tutorials/

ユーザガイド日本語訳:ci-user-guide-ja.nought-point-999.net/

小回りの利くフレームワークの話題をひとつ!

428 名前:nobodyさん mailto:sage [2008/07/14(月) 19:00:27 ID:???]
>>426-427
さんくすです。
できないみたいなので、
fuction current_timestamp() {
return date('Y-m-d H:i:s');
}
を使うことにしました。
でもこれだと、application server と database server が別だと
時刻を必ず揃えておく必要がありますね。

429 名前:nobodyさん mailto:sage [2008/07/14(月) 19:12:37 ID:???]
>>428
サーバの管理がきっちり出来ていれば、どんなサーバも1秒と違わないはずなので、時刻で
よっぽどシビアなソートやチェックをしていない限り、それは大丈夫かと。
また、原則からいうなら元々どちらかに合わせるべきなので、DBの関数が使えない時点で
application側の時刻のみを使うのが必然となるかな。

サーバ間の時刻あわせとは、微妙に話が違うような。

430 名前:nobodyさん mailto:sage [2008/07/14(月) 19:47:05 ID:???]
>>426-428
date_helperのunix_to_human じゃダメなのか?

unix_to_human(time(),TRUE,'eu');


431 名前:nobodyさん mailto:sage [2008/07/15(火) 06:26:58 ID:???]
うちでは、まず application/helpers/database_helper.php として↓を用意して

class SafeMarker {
  private $_str;
  public function __construct($str) { $this->_str = $str; }
  public function __toString() { return $this->_str; }
}
function mark_as_safe($str) {
  return new SafeMarker($str);
}

モデルの中でこんな感じで使ってますよ

$this->load->helper('database');
$this->db->set('foo', $bar);
$this->db->set('created_at', mark_as_safe('NOW()'));
$this->db->insert('mytable');

CI_DB_driver#escape を読むとわかるけど、gettype で 'string' でも 'boolean' でも
NULL でもない値はスルーしてくれるので、オブジェクトでラップすると通る。
ただし __toString はPHP5からかな。
一種のhackなので、NOW()みたいな安全だとわかっているものにしか使いませんが。

432 名前:nobodyさん mailto:sage [2008/07/15(火) 07:42:14 ID:???]
>>431
なんちゅうか、バッドノウハウの香りがw
> gettype で 'string' でも 'boolean' でもNULL でもない値はスルーしてくれる
っていう実装自体も、それに依存してるっていうのも、なんだかなあw

オブジェクトを渡されて、上記みたいにすることも前提にしてるのかな?>CI
(それなら、素直にescapeを回避するset系メソッドをつければいいのではと)

433 名前:431 mailto:sage [2008/07/15(火) 12:59:01 ID:???]
>>432
どうみてもBKです。本当に(ry
CI内部の実装依存だからCIをバージョンアップすると動かなくなるかも。

個人的には、gettypeを見て判定、の部分はとりたてておかしなコードでは
ないので、マイナーバージョンアップであれば大丈夫だろうという甘い期待w
最悪、mark_as_safe で grep して置き換えれば、なんとかなるだろうとかw
素人にも玄人にもオヌヌメできない。\(^o^)/

434 名前:431 mailto:sage [2008/07/15(火) 13:07:49 ID:???]
ってよくみたら set($key, $value = '', $escape = TRUE) って
第三引数があるじゃねーかw

$this->db->set('created_at', 'NOW()', FALSE);

で多分いけるね・・・ orz

435 名前:nobodyさん mailto:sage [2008/07/15(火) 13:10:36 ID:???]
>>434
でもそれだと
$this->db->insert('tablename', array('created_at'=>'NOW()'));
とかができないよね。
431の方法のほうが個人的に好み。

436 名前:nobodyさん mailto:sage [2008/07/15(火) 13:15:25 ID:???]
そういうの考えるのが面倒くさかったので、デフォで$this->db->insert($tablename, $valuearray);時は
created_atに作成日時をつっこみ、$this->db->update($tablename, $valuearray);時はupdated_atに
更新日時を突っ込むようにCI_DBを変更して使ってる。
バッドノウハウなのは百も承知だが、symfonyから流れてきた人にはこれが手放せないのよorz



437 名前:nobodyさん mailto:sage [2008/07/15(火) 17:00:08 ID:???]
>>436
それはDBのNOW()やCURRENT_TIMESTAMP()を使うの?
それともPHPのdate()を使うの?
前者ならまねしたいなあ

438 名前:nobodyさん mailto:sage [2008/08/02(土) 09:47:59 ID:???]
いつの間にか1.5から1.6になってる。
なんかかわったの?


439 名前:nobodyさん [2008/08/03(日) 18:45:02 ID:znW3bDml]
あれ、$this->dbがなくなってね?

440 名前:nobodyさん mailto:sage [2008/08/03(日) 19:04:30 ID:???]
kantigaidatta

441 名前:nobodyさん mailto:sage [2008/08/20(水) 20:18:05 ID:???]
CI使ってる人間ってどれぐらいいるんだろうか

442 名前:nobodyさん mailto:sage [2008/08/20(水) 20:44:32 ID:???]
17人

443 名前:nobodyさん mailto:sage [2008/08/22(金) 13:30:33 ID:???]
CIってforward とか redirect とかはどうやるの?

444 名前:nobodyさん mailto:sage [2008/08/23(土) 00:51:34 ID:???]
headerで自分で

445 名前:nobodyさん mailto:sage [2008/08/23(土) 01:26:31 ID:???]
helperとか無かったっけ
まあぶっちゃけ自分でheader(ほげほげ)書くのと変わらないけど

446 名前:nobodyさん [2008/08/25(月) 13:31:03 ID:Ziu2Tqsv]
CodeIgniterでは、URLは「コントローラ名/メソッド名」というのが基本ですが、
このパターンを変更することはできますか。

やりたいのは、
- /blog/index
- /blog/show
- /blog/create
- /blog/edit
というのではなく、
- /blog/maka
- /blog/blackstar
- /blog/deaththekid
のように「コントローラ名/ユーザ名」のようにしたいということです。
つまり /blog 以下のアクセスをある特定のメソッドに縛りたいということです。




447 名前:nobodyさん mailto:sage [2008/08/25(月) 15:36:16 ID:???]
>>446
ヒント
config/routes.php
codeigniter.com/user_guide/general/routing.html
userguide.cilab.info/general/routing.html

448 名前:nobodyさん mailto:446 [2008/08/26(火) 15:08:09 ID:???]
>>447
ありがとうございます!

449 名前:nobodyさん mailto:446 [2008/08/26(火) 15:24:29 ID:???]
Routingについて質問です。
ユーザーズガイドの例にあったのですが、
$route['product/:num'] = "catalog/product_lookup";
という設定をした場合、「:num」の値は Catalog->product_lookup() の中で
どうやって取得すればいいのでしょうか。
通常だと Catalog->product_lookup() の引数にこの値が渡されますが、
試したところ、$route[] を設定した場合は渡されないようです。


450 名前:nobodyさん mailto:446 [2008/08/26(火) 15:37:11 ID:???]
>>449
英語のドキュメントに書いてありました。
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
でいいみたいですね。
お騒がせしました。

451 名前:nobodyさん [2008/08/28(木) 12:20:46 ID:B/844Qiw]
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));

この時、無関係な?は置換されないようになってますか?
たとえば、クエリの中に、hoge = 'fuga???'があった時など

452 名前:nobodyさん mailto:sage [2008/08/28(木) 22:52:42 ID:???]
>>451
ソレは自分で試してみたほうが早いんじゃない?

453 名前:nobodyさん mailto:sage [2008/08/29(金) 08:50:09 ID:???]
複数のコントローラ間でメソッドを共有したいとき、どうするのがいいでしょうか。
できれば、あるコントローラのメソッド内で、別のコントローラをnewしてメソッドを実行できるのがいちばん理想的なんですが、そんなことできますか。

454 名前:nobodyさん mailto:sage [2008/08/29(金) 11:22:01 ID:???]
>>453
application/libraryにMY_Controllerを置き、共通メソッドはそこに置く。
そのメソッドを使うコントローラはextends MY_Controllerで作る。


455 名前:nobodyさん mailto:sage [2008/08/29(金) 11:44:55 ID:???]
>>454
しかしそれをしていると、だんだん多重継承っぽい事がしたくなってくるという罠

シンプルな処理、Controllerのプロパティ、機能等が必要ない様なものは、
ユーティリティクラスに切り出すとかもありかと思う

そして、libraries がカオスになるというセンスのない俺

456 名前:nobodyさん mailto:453 [2008/08/29(金) 14:42:55 ID:???]
>>454
MY_Controllerに相当するものは作っているんですが、そこにはやはり多くのコントローラに共通するものだけをおきたいです。
あるコントローラAとコントローラBだけが使うようなものは、やっぱりMY_Controllerにはおきたくないですよね。

class AB_Controller extends MY_Controller
class ControllerA extends AB_Controller
class ControllerB extends AB_Controller
みたいなのってできますっけ?


>>455
多重継承やMix-inは欲しくなりますね。
librariesやhelpersがカオスになるのはよくわかります。
今まさにそんなかんじになりつつあるので、整理しているところです。




457 名前:nobodyさん mailto:sage [2008/09/07(日) 15:37:47 ID:???]
>>456
びっくりするくらい亀レスですがw

> class AB_Controller extends MY_Controller
> class ControllerA extends AB_Controller
> class ControllerB extends AB_Controller
> みたいなのってできますっけ?

できますね。うちでは、MY_Controller にはしていませんが。
(この辺のAutoLoderの仕組みがあんまりよくわかってないw)

458 名前:nobodyさん [2008/09/12(金) 18:31:21 ID:q2obqPa7]
>457
Fatal error: Class 'AB_Controller' not found in 呼び出してるコントローラーを継承しているクラス.php on line XX
ってなるんですが、なぜでしょうか。
以下に配置してます。
/system/application/libraries/AB_Controller.php
--------------------------------------------------------
<?php

class AB_Controller extends MY_Controller {

function AB_Controller()
{
parent::MY_Controller();
}
}
?>

459 名前:nobodyさん mailto:sage [2008/09/13(土) 01:11:52 ID:???]
>>458
「MY_がついてて、MY_の後の最初の1文字だけが大文字」の命名ルールに従ってないと
オートローディングできないですよ〜。
(プレフィクスはconfig.phpでMY_以外に変更可能)

命名規則を揃えるか、自前でコントローラクラスにrequire_onceを書くか、どっちかの手当てが
必要。

460 名前:nobodyさん [2008/09/14(日) 01:01:21 ID:cUARlcyz]
>>459
ありがとうございました。大変助かりました!

461 名前:nobodyさん mailto:sage [2008/09/18(木) 13:09:07 ID:???]
CodeIgniter的には、pluginとhelperの違いって何かありますか。
どっちも関数を提供するだけで、違いが内容に見えます。

462 名前:nobodyさん [2008/09/18(木) 16:11:44 ID:nzPLdxkT]
ログのしきい値おかしいね。普通
0 出力なし
1 ERROR
2 INFOも
3 DEBUGも
じゃない?

463 名前:nobodyさん mailto:sage [2008/09/18(木) 17:07:43 ID:???]
syslogの区分けにして欲しいよな
ciはアメリカ人らしく独自すぎるところが結構ある

464 名前:nobodyさん [2008/09/18(木) 17:47:47 ID:nzPLdxkT]
だよね。
しきい値勝手に変えちゃったもん。

465 名前:nobodyさん mailto:sage [2008/09/22(月) 21:08:37 ID:???]
なんかDB使ってるとFromのテーブルがどんどん増えていくんだけれども。
もしかして静的にテーブル溜め込んでんの?

466 名前:nobodyさん mailto:sage [2008/10/08(水) 18:34:20 ID:???]
CIでunit testやってる人いません?

うちはCIのWikiに出てたSimpletesterをいじりながらなんとかやってますけど、
1フォルダ内のテストクラスを全実行することしか出来なくてちょっとこまってます。
ttp://codeigniter.com/wiki/SimpleTester_-_Unit_testing_library/




467 名前:nobodyさん mailto:sage [2008/10/20(月) 05:19:44 ID:???]
base_urlにIndex.phpが引っ付くのはでふぉ?

468 名前:nobodyさん mailto:sage [2008/10/20(月) 05:21:12 ID:???]
ちがったform_openだ

469 名前:nobodyさん mailto:sage [2008/10/24(金) 20:58:58 ID:???]
1.7.0

470 名前:nobodyさん mailto:sage [2008/10/28(火) 10:49:17 ID:???]
1.7でなにか変わった?

471 名前:nobodyさん mailto:sage [2008/10/28(火) 14:21:52 ID:???]
validationクラスがform_validationクラスに名前変更&若干の仕様変更
→configに定義したものから読み込み可能になった

sessionデータをDBに保存するように変更とソレに伴ってテーブル定義変更

この二つ位かな?個人的には

詳しくは
codeigniter.com/user_guide/changelog.html

472 名前:470 mailto:sage [2008/10/28(火) 20:20:01 ID:???]
なるほど、どもです。

473 名前:nobodyさん mailto:sage [2008/11/12(水) 18:05:07 ID:???]
ciってcgi版phpでrewriteを使って
www.example.com/index.php/aaa/

www.example.com/aaa/
でアクセスできるようにすると、動かないのですかね・・・







[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<109KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef