元スレ[PHP][フレームワーク]CodeIgniterスレ
php覧 / PC版 /みんなの評価 : ○
501 = :
>>600
いやあ、指南役のお兄さん頼もしいわ。
ほれた
502 = :
Active Recordについて少し質問です。
updateメソッドを、事前のwhereなしで呼ぶとテーブル内のデータを全部更新してしまって、
アボンしますよね?
これ、よくやらかしてしまうのですが、よい回避方法ないでしょうか?
マニュアル見ると、
$this->db->update('mytable', $data, "id = 4");
みたいに、引数でwhereを追加するように決めてしまえばいいのですが、
うっかり引数を省略すると、アボンしてしまいます。
引数省略しないようないい方法ないですかね?
503 = :
まじすか
504 = :
>>502
ActiveRecordの使い方としてそれはどうなんだ
find()で取ってきたものをupdate()なら、そうはならんのでは?
と、CIを使ったことのない俺が書いてみる
505 = :
>>504
私の場合、すでにあったら上書き、なかったらinsertという風な処理を書いていたのですが、
たまに、insert()をupdate()に置き換えただけで実行してしまい、テーブルごとアボンしてしまうのです。
まあ、アフォといえばアフォなのですがw
普通は >>504の意図するように、get_where()->result(); なりしてupdateしたいidを得て、
そのidをupdateにつっこむもんですよね・・・。
506 = :
ciのActiveRecordって、save()でidがあればupdate, なければinsertって判断しないのか・・・
リファレンス見たけど、SQLが透けて見えそうな薄い実装だね。だから速いんだろうけど。
>>502
常にwhere()呼んだら駄目か?insert()なら無視してくれない?
すごく間抜けに見えるだろうけど。
あるいは、ラッパーかぶせてidを指定しないupdate()を隠すとか。
もしくは配列からidをとって勝手にwhereに入れるupdate()ラッパーを書くとか。
507 = :
1.7ドキュメントの翻訳作業が進んでいるみたいですね。
http://lists.sourceforge.jp/mailman/archives/codeigniter-users/2009-February/001699.html
俺も手伝いたいんだが、こういのっていきなり着手しちゃっていいもんなのかな?
皆さんの訳がとても上手いので、なんか気が引けてしまう。
508 :
おっと、ちいたんの悪口はそこまでだ。
509 = :
>>507
翻訳してる人乙です。
俺もちょっとくらいオープンソースに関わってみたいな…なんて思ってる^^
517 = :
別にviewにfunction置いても良いと思うけど、viewの可読性を落とさないためにhelperがあるんだから、
使えるならhelper定義すればいい。
その場限りならviewでも良いんじゃないの?
$hogeはshow_mage($title, $hoge)って引数に渡さないと駄目だろ。
functionが呼び出された時点でスコープが変わるんだから。他所のローカル変数は見えない。
話は変わるけど、誰かODBCの設定database.phpにどう書くか教えてくれない?
518 = :
>>517
ありがとう。とりあえずは引数に渡していけました。
helperも使ってみます。
519 = :
>>516
viewファイルで関数定義ってことは、結局クラスメソッド内で関数定義するのと同じ、なのかな
class Hoge
{
function say()
{
echo "hoge\n";
function say_page()
{
echo "page\n";
}
say_page();
}
}
$c = new Hoge();
$c->say(); #=> "hoge\npage\n"
say_page(); #=> "page\n"
say(); #=> (Fatal error)
なにこのPHPの仕様。関数の中で関数を定義するとグローバル関数になるのかな?
まあ名前がかぶったらFatal errorになるだろうけど、気持ち悪いのでできるだけviewで
ごにょごにょしない方がいいような。
だれか詳しい人解説してくれないかな・・・
520 = :
viewがクラスだと思ってないか?ありゃただのスクリプトだ。
JSPやASPみたいにクラス定義と一体化してるわけじゃない。
PHPではclassと明示しない限り、上から順番に処理される。関数はクラス内ならメソッド、そうでなきゃグローバル。
521 = :
>>520
その「ただのスクリプト」がどう実行されているか、ってのを問題にしてるわけなので。
脊髄反射いくない。
522 = :
ユーザガイド見てくるといいと思うよ。
523 = :
>>522
ユーザガイドにそんな記述あるの?
ソース見てみたので一応書いてみる。Kohanaだけどw
・標準のviewは CI_Loader::view メソッドで表示処理?
・そこから呼び出される _ci_loadメソッドでob_startされた後
echo eval( ごにょごにょ file_get_contents(~~) )
もしくは
include(~~)
・んで結果をreturn もしくは $OUT->output()
この仕組みなら、viewファイル内での関数定義は、CI_Lorder::_ci_loadメソッド内で
関数定義するのと同等かな。だから、同じテンプレートを2回読み込むと、多分Fatal Error
どこまでCIの現行バージョンで一緒か知らんし、実際に動かして確認してないので大嘘かも。
また、PHPで関数内で関数が定義できることやその動作については
http://ml.php.gr.jp/pipermail/php-users/2005-June/026279.html ← このツリーを
http://ml.php.gr.jp/pipermail/php-users/2005-June/026322.html ← この辺まで読んで納得。
PHP5でも仕様はこの当時のままっぽい?
以上、適当で嘘くさいので、間違ってたら誰か教えて・・・
524 = :
remapに関して質問です。
remapした場合関数の引数に当たる部分はuri->segment以外で
とる方法はないのでしょうか?
サイトに載っている例では
function _remap($method)
{
if ($method == 'some_method')
{
$this->$method();
}
else
{
$this->default_method();
}
}
となっていて、引数部分がありませんよね。
現状switchで$methodの内容からsegmentで値引っ張って回してますが、
もうちょっとスマートな書き方はない物ですかね・・・
525 = :
興味ないだろうけどオレ流_remap
function _remap($method)
{
if (method_exists($this, $method)) {
call_user_func_array(array(&$this, $method), array_slice($this->uri->rsegments, 2));
}
else if (method_exists($this, $method.'_')) {
call_user_func_array(array(&$this, $method.'_'), array_slice($this->uri->rsegments, 2));
}
else {
call_user_func_array(array(&$this, 'index'), array_slice($this->uri->rsegments, 1));
}
}
なんでこうなったか忘れたけど、これ書いたとき結構調べたから
$this->uri->からとってくる以外ないと信じたい。
526 = :
Kohanaスレないので近縁のこちらで質問させてください。
ファイルアップロードについてなんだが、
コントローラ/モデル/ビュー内で$_FILES受け取れないのは仕様?
◆ちなみにフォームはこんな感じ
<form method="post" action="/admin/update/" enctype="multipart/form-data">
<input type="text" name="name" />
<input type="file" name="photo" />
<input type="submit" name="submit" value="アップロード" />
</form>
◆Controller/admin.phpはこんな感じ
public function update(){
print_r($_POST); // 正常に出力
print_r($_FILES); // 空のArrayが出力される
print_r($_FILES["photo"]); // エラー「Undefined index: photo」
}
Kohanaフォーラムだと$_FILESで動いている投稿はあるんだけどなぁ。
完全手詰まりしてしまった。
528 = :
ここでうんこ禁止!
ケツの穴にコルク栓をしておこう^^
529 = :
あの、「コードイグニッター」って読んでたんですけど・・・
530 = :
>>528
「イグニッション!」(点火!)
シュポーーーン!!
531 = :
念のため、元ネタはマカロニほうれん荘です^^
532 = :
これってクッキー以外のセッション使うにはどうすればいいの?
ZFのセッションとか使うようにできますか?
533 = :
>>532
これ
http://codeigniter.com/wiki/Native_session/
使うかZendのセッションライブラリをapplication/librariesにおいて使えばおk
534 = :
>>533
迅速なレスありがとうございます!助かりました。
535 = :
モデルクラスの命名規則なんですが、コントローラークラスと同じ名前にするとエラーになりますか?
Fatal error: Cannot redeclare class Bbs in /usr/local/www/htdocs/.../system/application/models/bbs.php on line 100
536 = :
(例)掲示板のコントローラークラス
<?php
class Bbs extends Controller
{
//コンストラクタ
function Bbs()
{
parent::Controller();
$this->load->model('bbs');//bbsのモデル読み込み
}
//トップページ
function index()
{
echo "bbs menu";
}
//タイトル表示
function title()
{
echo $this->bbs->get_title();
}
}
?>
537 = :
(例)掲示板のモデルクラス
<?php
class Bbs extends Model
{
//コンストラクタ
function Bbs()
{
parent::Model();
$this->load->database();
}
//タイトル取得
function get_title()
{
$query = $this->db->get('bbs');
return $query->result_array();
}
}
?>
538 = :
コントローラークラスですでに「Bbs」というクラス名を使用していると、
モデルクラス名として「Bbs」は使えないということでしょうか?
=Bbsというコントローラーの中で、Bbsというモデルを使うことができない?
みなさんは、モデルクラス名を付けるとき、どうしてますか?
=モデルを使うコントローラーのクラス名を重複しないように命名しないとダメなの?
「Bbs_model」とかだと、なんか長ったらしい><
539 :
最近無いのでたてました。
540 = :
すまん、誤爆したw
541 = :
CodeIgniterちょっと触ってみた。
チュートリアルやったんだけど、この後は何をすべきなんだろうか。
徹底入門って本どう?役に立ちます?
542 = :
>>541
掲示板でも作ってみればいいのではないかと。
って10年前から同じ事言われてる様な気もする
543 = :
CIもcakeぐらいのフォーラムに成長して欲しいなあ・・・。
544 = :
CIでシェルスクリプトを使いたいのだが、どうやればいいのでしょうか。
545 = :
>>541
最初はオンラインのリファレンスを見てやってたけど、全体を俯瞰するのにページの切り替えが面倒に感じた
徹底入門はオフラインでどんどん読み進めるので役に立ったよ
最初慣れるまでリファレンスとして首っ引き
ActiveRecordクラスのメソッド名や、よく使うヘルパー関数を覚えたら、あとはほとんど見なくてもアプリを作れるようになった
時給1000円としても3時間分程度のコスト
CIで生産性アップしたらすぐに元は取れるし、本は読み終わったら売り払えばOK
最近買った本の中では元が取れた1冊だったと思います
546 = :
徹底入門で物足りないのは、ログイン認証の作り方
あと携帯のセッション管理かな
この二つはネットで検索してフォローしました
(このスレの情報も役に立ちました^^)
547 = :
>>541
ちょっとしたWEBアプリを作っているんですが、一緒に作ってみませんか?
=2chの過去ログを保存するWEBアプリです。
DATファイルからHTMLページを作成する機能をこれから作る予定なんですが、良かったらアドバイスとか勉強の材料にでも
548 = :
1.7の方がバリデーションとか便利そうだけど、日本語化パックがないのか。
今から始めるなら1.6とどっちがいいですか?
549 = :
徹底入門みながら、差分情報をリファレンスで確認しつつ1.7やったよ。
MLの方に 1.7の日本語化パックあったはず。完全じゃなかったとおもうけど
みんなの評価 : ○
類似してるかもしれないスレッド
- [PHP][フレームワーク]CodeIgniter Part2 (983) - [86%] - 2015/4/7 12:46
- 【PHP】フレームワークPharonスレ (306) - [60%] - 2022/10/10 20:00
- [PHPフレームワーク]Laravel (995) - [53%] - 2017/7/22 11:45
- 【PHP】PHPフレームワーク総合スレ14 (1001) - [50%] - 2010/12/11 10:32
- 【PHP】PHPフレームワーク総合スレ15 (989) - [50%] - 2013/9/27 6:00 △
- 【PHP】フレームワークMapleに舌鼓 (470) - [48%] - 2017/12/31 9:31
- 2ch有志がPHPフレームワークを作るスレ (81) - [45%] - 2019/5/9 7:46
トップメニューへ / →のくす牧場書庫について