のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,683,241人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - Rapyd + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
401 : nobodyさん - 2008/06/16(月) 03:40:01 ID:??? (+100,+30,-252)
>>396
PHP初心者だけど、結構ありがたい本。
環境構築からデバッグ方法、フレームワークの基礎的な概念も説明してるし。

リファレンス部も、サンプルコードが充実してるのがありがたい。
迷った時には、この本開けば即解決になる確率が高い。

フレームワークとかの、言語以外の範囲の入門書って、イマイチそういう
迷ったときに解決する為の「当たり」ページを引く確率低いってイメージ
あるから、俺的にはこの本はお勧めできる。

ただ、CI内部のコードとかバリバリ読めて、ネット上からさくさく自分の
探してる情報が引き出せて、CIに機能が無ければ自分でガリガリ書くって
いうようなパワーユーザは、ものたりないって言うかもしれないね。
402 : nobodyさん - 2008/06/16(月) 04:05:37 ID:??? (+52,+29,-1)
なんか宣伝くせーな
403 : nobodyさん - 2008/06/16(月) 10:32:47 ID:uqAO2CKu (+43,+29,-62)
昨日本屋で見てきました。
パラパラとしか見てないけど、即買い!という判断には至らなかった。
自分が本を買う基準の一つとして、購入後の利用頻度を考慮しますが、2~3回読んだら終わりかな?と思ったので。

>>401
フレームワーク自体に慣れてない人、初心者にとっては役立つ
=CIのマニュアル代わりとして使う用途なら、紙ベースなので便利
と思いました。
404 : nobodyさん - 2008/06/17(火) 20:04:27 ID:??? (+57,+29,-19)
他のFW本よりもわかりやすかったよ。
CIそのものが簡単ということなのかな。
405 : nobodyさん - 2008/06/24(火) 05:50:32 ID:??? (+62,+29,-80)
404エラーページの取り回しダサくね?
標準の処理と同じコンテクストで処理するのが自然なんだから
エラー用のクラス名とメソッド名だけ指定するようにするべきだろJK
しかもビューチフルにハックもしにくいし
所詮ハゲが書いたFWか・・
406 : nobodyさん - 2008/06/26(木) 00:50:52 ID:??? (+57,+29,-18)
と、ハックに挫折したハゲが申しております。
407 : nobodyさん - 2008/06/26(木) 00:55:50 ID:??? (+57,+29,-1)
config周辺もひどい
アメ公の美意識の低さは異常
408 : nobodyさん - 2008/07/01(火) 04:00:36 ID:??? (-1,-29,-6)
CIでXoopsモジュールとか作った人いたりする?
409 : nobodyさん - 2008/07/02(水) 18:00:54 ID:??? (+3,-30,-107)
Fatal error: Call to a member function get() on a non-object in C:\xampp\htdocs\ci\system\application\controllers\blog.php on line 15

DBオブジェクトが取れてないようなんだけど、取れてない部分のエラーが出てこないのはなんで?
410 : nobodyさん - 2008/07/02(水) 18:12:41 ID:??? (+48,+20,-9)
ライブラリが登録されてなかった。

でもエラーが出ないのはうんこだろ。
412 : nobodyさん - 2008/07/03(木) 17:29:46 ID:EmmaV8CT (+19,-29,-80)
管理者用の画面を作るときって どうやってる?

controller/admin 掘って そこにコントローラ置いて
あとは admin にルーティングすればいいのかな?

ログイン認証なんかのコントローラとか どうやってわけるのがいいんだろう…
413 : nobodyさん - 2008/07/03(木) 17:40:04 ID:??? (+59,+29,-14)
>>412
ぶっちゃけ、どんなURLにしたいかで変わる様な気がする
別ドメインがよければ、Apacheの設定も絡むし。
一般的なのはどんな感じなんだろうねえ
414 : 412 - 2008/07/03(木) 17:54:55 ID:??? (+17,-29,-160)
>>413

ありがとう そだね

とりあえずは controller/admin/ にディレクトリ掘って
そこに置くことにした


あと 管理者関連のコントローラだけ 共通の認証チェック処理いれたいんだけど
その辺のやり方がわからない


前にCakePHPさわったときは beforeFilter なんかで
コントローラ共通の処理入れられたんだけど
CIは 自分でControllerクラス継承して 作らないとだめなのかな?

管理ページ周りの処理で 参考になるとこあったら教えてください…
415 : 412 - 2008/07/03(木) 18:02:00 ID:??? (+0,-30,-121)
Controllerクラス継承して作る場合は
>>411 の言ってることと同じだね


一応 コアクラスの継承は

system/application/library/ に Controllerクラスを継承したMY_Controller.php
とか作ればいいみたいだよ


ログイン認証の共通処理も そうやってAppController 作ればいいんかな…
その辺りの情報がないから どうやるのがいいのか
いまいちわからん
416 : nobodyさん - 2008/07/03(木) 18:06:26 ID:??? (+11,-30,-61)
>>414
CIさわらずにKohana触ってる邪道な俺だけど、俺も知りたい
便乗w

俺は、libraries の中にBaseController, UserController, AdminController って作っちゃったな・・・

誰か、筋の良いやり方を教えて
417 : 412 - 2008/07/03(木) 18:12:02 ID:??? (+10,-30,-159)
>>415

ちょいウソあったw

AppControllerじゃなくて MY_Controller だね

/system/application/library/MY_Controller.php

class MY_Controller extends Controller {
function MY_Controller() {
parent::Controller();
}
}

こんな感じ。

ログインの共通処理も ここでやろうかと思ったんだけど
それでいいのかがわからん…

>>416 みたいに 種類ごとにクラス作ったほうがいい気もするし…
418 : 412 - 2008/07/03(木) 18:52:48 ID:??? (+4,-30,-104)
>>417 の方法でやってるんだが
/system/application/libraries/MY_Controller.php

のようなの作れば コアクラスは自動で置き換わるらしいんだが
置き換わらないな

コントローラ側で

class bbs extends MY_Controller {
}

みたいに MY_ つけてやらないとダメ
CIのルールだとデフォでMY_付けることになってるけど
これじゃ意味ないじゃん

バグ?
419 : nobodyさん - 2008/07/03(木) 18:57:59 ID:??? (+29,-30,-214)
[/system/application/libraries/MY_Controller.php]
class TEST_Controller extends Controller {
}


[/system/application/controllers/test.php]
class Bbs extends TEST_Controller {
}

にしてもいけちゃう



class Bbs extends Controller {
}

だと TEST_Controller が継承されない
(ルール通りにクラス名を MY_Controller にしても場合も同じ)


コアクラス、置き換わってない…
バグくさいね orz
420 : 412 - 2008/07/03(木) 19:38:23 ID:??? (+43,+10,-48)
ぼけてた 釣ってくる…


でも「コアクラスを拡張する場合のクラス名には MY_ を付ける」
っていう ルールは意味がないね


http://codeigniter.jp/user_guide_ja/general/core_classes.html


ファイルは MY_ 付けないと読み込んでくれないみたいだけど、
クラス名は別に MY_ 付ける必要ないよね?

なんでこんなこと書いてるんだろう
421 : nobodyさん - 2008/07/03(木) 20:15:07 ID:??? (+57,+29,-7)
英語版にはちゃんとした事書いてたりするけ?
422 : 411 - 2008/07/03(木) 20:23:33 ID:XZ5SMLTk (+12,+29,-14)
事故解決してたんだけどありがとう。

ただAppModelは相変わらずわかりません。
どのタイミングでロードすればええんですか?
Hook系もだめぽでした。
423 : 412 - 2008/07/03(木) 22:43:11 ID:??? (+44,+8,-66)
>>422

>>419-420 の方法じゃだめなの?

クラス名 MY_ つけなくてもいけるっぽいから
AppControllerにしとけばいいんじゃ

よくわからん ルールだなあ


おれはてっきり Controller そのものを置き換えてくれるとおもったんだが
ライブラリとかヘルパはそうだよね
424 : nobodyさん - 2008/07/04(金) 15:09:16 ID:??? (+4,-30,-101)
>>422
コントローラはMY_Controllerをextendsして書いてるが、
モデルは仕方ないので各モデルの冒頭で
<?php
require_once(APPPATH."libraries/MY_Model.php");

class Hoge_model extends MY_Model
425 : nobodyさん - 2008/07/14(月) 11:55:08 ID:??? (+9,-30,-111)
$this->db->insert() するときに, created_at とか updated_at というカラムに current_timestamp を指定したいんだけど、どうやったらいいの?
$array = array('name'=>'Foo', 'created_at'=>'current_timestamp');
として insert() してみたけど、current_timestamp にならず 0000-00-00 00:00:00 になった。
ちなみにMySQL5.0
426 : nobodyさん - 2008/07/14(月) 12:05:24 ID:??? (+14,-30,-83)
>>425
Database に、escapeしないでsetする方法ってあったっけ?
それがsetメソッドなら、
$db->エスケープしないset('create_at', '式');
$db->insert('テーブル名') でいけるような気がする。

以上想像。なければ、Databaseを拡張する必要があるかも?
俺もこの辺知りたい。ソース嫁って感じだけど
427 : nobodyさん - 2008/07/14(月) 12:12:17 ID:??? (+3,-30,-29)
NOW()とかも文字列として扱っちゃうから
date('Y-m-d H:i:s') にするしかないと思う

オレは
function now()
{
return date('Y-m-d H:i:s');
}
っていう関数を作ってある
428 : nobodyさん - 2008/07/14(月) 19:00:27 ID:??? (+40,-30,-61)
>>426-427
さんくすです。
できないみたいなので、
fuction current_timestamp() {
return date('Y-m-d H:i:s');
}
を使うことにしました。
でもこれだと、application server と database server が別だと
時刻を必ず揃えておく必要がありますね。
429 : nobodyさん - 2008/07/14(月) 19:12:37 ID:??? (+68,+29,-75)
>>428
サーバの管理がきっちり出来ていれば、どんなサーバも1秒と違わないはずなので、時刻で
よっぽどシビアなソートやチェックをしていない限り、それは大丈夫かと。
また、原則からいうなら元々どちらかに合わせるべきなので、DBの関数が使えない時点で
application側の時刻のみを使うのが必然となるかな。

サーバ間の時刻あわせとは、微妙に話が違うような。
430 : nobodyさん - 2008/07/14(月) 19:47:05 ID:??? (+0,-30,-23)
>>426-428
date_helperのunix_to_human じゃダメなのか?

unix_to_human(time(),TRUE,'eu');
431 : nobodyさん - 2008/07/15(火) 06:26:58 ID:??? (+29,-30,-247)
うちでは、まず 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さん - 2008/07/15(火) 07:42:14 ID:??? (+10,-30,-95)
>>431
なんちゅうか、バッドノウハウの香りがw
> gettype で 'string' でも 'boolean' でもNULL でもない値はスルーしてくれる
っていう実装自体も、それに依存してるっていうのも、なんだかなあw

オブジェクトを渡されて、上記みたいにすることも前提にしてるのかな?>CI
(それなら、素直にescapeを回避するset系メソッドをつければいいのではと)
433 : 431 - 2008/07/15(火) 12:59:01 ID:??? (+4,-29,-76)
>>432
どうみてもBKです。本当に(ry
CI内部の実装依存だからCIをバージョンアップすると動かなくなるかも。

個人的には、gettypeを見て判定、の部分はとりたてておかしなコードでは
ないので、マイナーバージョンアップであれば大丈夫だろうという甘い期待w
最悪、mark_as_safe で grep して置き換えれば、なんとかなるだろうとかw
素人にも玄人にもオヌヌメできない。\(^o^)/
434 : 431 - 2008/07/15(火) 13:07:49 ID:??? (+9,-30,-57)
ってよくみたら set($key, $value = '', $escape = TRUE) って
第三引数があるじゃねーかw

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

で多分いけるね・・・ orz
435 : nobodyさん - 2008/07/15(火) 13:10:36 ID:??? (+4,-30,-32)
>>434
でもそれだと
$this->db->insert('tablename', array('created_at'=>'NOW()'));
とかができないよね。
431の方法のほうが個人的に好み。
436 : nobodyさん - 2008/07/15(火) 13:15:25 ID:??? (+7,-30,-106)
そういうの考えるのが面倒くさかったので、デフォで$this->db->insert($tablename, $valuearray);時は
created_atに作成日時をつっこみ、$this->db->update($tablename, $valuearray);時はupdated_atに
更新日時を突っ込むようにCI_DBを変更して使ってる。
バッドノウハウなのは百も承知だが、symfonyから流れてきた人にはこれが手放せないのよorz
437 : nobodyさん - 2008/07/15(火) 17:00:08 ID:??? (-1,-29,-30)
>>436
それはDBのNOW()やCURRENT_TIMESTAMP()を使うの?
それともPHPのdate()を使うの?
前者ならまねしたいなあ
438 : nobodyさん - 2008/08/02(土) 09:47:59 ID:??? (+11,-16,-7)
いつの間にか1.5から1.6になってる。
なんかかわったの?
440 : nobodyさん - 2008/08/03(日) 19:04:30 ID:??? (-6,-29,-2)
kantigaidatta
441 : nobodyさん - 2008/08/20(水) 20:18:05 ID:??? (+48,+20,-1)
CI使ってる人間ってどれぐらいいるんだろうか
442 : nobodyさん - 2008/08/20(水) 20:44:32 ID:??? (+26,+8,+0)
17人
443 : nobodyさん - 2008/08/22(金) 13:30:33 ID:??? (-1,-29,-7)
CIってforward とか redirect とかはどうやるの?
444 : nobodyさん - 2008/08/23(土) 00:51:34 ID:??? (-6,-29,-15)
headerで自分で
445 : nobodyさん - 2008/08/23(土) 01:26:31 ID:??? (-1,-29,-20)
helperとか無かったっけ
まあぶっちゃけ自分でheader(ほげほげ)書くのと変わらないけど
447 : nobodyさん - 2008/08/25(月) 15:36:16 ID:??? (+10,-29,-3)
448 : nobodyさん - 2008/08/26(火) 15:08:09 ID:??? (+34,+10,+1)
>>447
ありがとうございます!
449 : nobodyさん - 2008/08/26(火) 15:24:29 ID:??? (+9,-30,-150)
Routingについて質問です。
ユーザーズガイドの例にあったのですが、
$route['product/:num'] = "catalog/product_lookup";
という設定をした場合、「:num」の値は Catalog->product_lookup() の中で
どうやって取得すればいいのでしょうか。
通常だと Catalog->product_lookup() の引数にこの値が渡されますが、
試したところ、$route[] を設定した場合は渡されないようです。
450 : nobodyさん - 2008/08/26(火) 15:37:11 ID:??? (+4,-30,-44)
>>449
英語のドキュメントに書いてありました。
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
でいいみたいですね。
お騒がせしました。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : - Rapyd + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について