元スレ[PHP][フレームワーク]CodeIgniterスレ
php覧 / PC版 /みんなの評価 : ○
401 = :
>>396
PHP初心者だけど、結構ありがたい本。
環境構築からデバッグ方法、フレームワークの基礎的な概念も説明してるし。
リファレンス部も、サンプルコードが充実してるのがありがたい。
迷った時には、この本開けば即解決になる確率が高い。
フレームワークとかの、言語以外の範囲の入門書って、イマイチそういう
迷ったときに解決する為の「当たり」ページを引く確率低いってイメージ
あるから、俺的にはこの本はお勧めできる。
ただ、CI内部のコードとかバリバリ読めて、ネット上からさくさく自分の
探してる情報が引き出せて、CIに機能が無ければ自分でガリガリ書くって
いうようなパワーユーザは、ものたりないって言うかもしれないね。
402 = :
なんか宣伝くせーな
403 :
昨日本屋で見てきました。
パラパラとしか見てないけど、即買い!という判断には至らなかった。
自分が本を買う基準の一つとして、購入後の利用頻度を考慮しますが、2~3回読んだら終わりかな?と思ったので。
>>401
フレームワーク自体に慣れてない人、初心者にとっては役立つ
=CIのマニュアル代わりとして使う用途なら、紙ベースなので便利
と思いました。
404 = :
他のFW本よりもわかりやすかったよ。
CIそのものが簡単ということなのかな。
405 = :
404エラーページの取り回しダサくね?
標準の処理と同じコンテクストで処理するのが自然なんだから
エラー用のクラス名とメソッド名だけ指定するようにするべきだろJK
しかもビューチフルにハックもしにくいし
所詮ハゲが書いたFWか・・
406 = :
と、ハックに挫折したハゲが申しております。
407 = :
config周辺もひどい
アメ公の美意識の低さは異常
409 = :
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 = :
ライブラリが登録されてなかった。
でもエラーが出ないのはうんこだろ。
412 :
管理者用の画面を作るときって どうやってる?
controller/admin 掘って そこにコントローラ置いて
あとは admin にルーティングすればいいのかな?
ログイン認証なんかのコントローラとか どうやってわけるのがいいんだろう…
413 = :
>>412
ぶっちゃけ、どんなURLにしたいかで変わる様な気がする
別ドメインがよければ、Apacheの設定も絡むし。
一般的なのはどんな感じなんだろうねえ
414 = :
>>413
ありがとう そだね
とりあえずは controller/admin/ にディレクトリ掘って
そこに置くことにした
あと 管理者関連のコントローラだけ 共通の認証チェック処理いれたいんだけど
その辺のやり方がわからない
前にCakePHPさわったときは beforeFilter なんかで
コントローラ共通の処理入れられたんだけど
CIは 自分でControllerクラス継承して 作らないとだめなのかな?
管理ページ周りの処理で 参考になるとこあったら教えてください…
416 = :
>>414
CIさわらずにKohana触ってる邪道な俺だけど、俺も知りたい
便乗w
俺は、libraries の中にBaseController, UserController, AdminController って作っちゃったな・・・
誰か、筋の良いやり方を教えて
417 = :
>>415
ちょいウソあったw
AppControllerじゃなくて MY_Controller だね
/system/application/library/MY_Controller.php
class MY_Controller extends Controller {
function MY_Controller() {
parent::Controller();
}
}
こんな感じ。
ログインの共通処理も ここでやろうかと思ったんだけど
それでいいのかがわからん…
>>416 みたいに 種類ごとにクラス作ったほうがいい気もするし…
418 = :
>>417 の方法でやってるんだが
/system/application/libraries/MY_Controller.php
のようなの作れば コアクラスは自動で置き換わるらしいんだが
置き換わらないな
コントローラ側で
class bbs extends MY_Controller {
}
みたいに MY_ つけてやらないとダメ
CIのルールだとデフォでMY_付けることになってるけど
これじゃ意味ないじゃん
バグ?
419 = :
[/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 = :
ぼけてた 釣ってくる…
でも「コアクラスを拡張する場合のクラス名には MY_ を付ける」
っていう ルールは意味がないね
http://codeigniter.jp/user_guide_ja/general/core_classes.html
ファイルは MY_ 付けないと読み込んでくれないみたいだけど、
クラス名は別に MY_ 付ける必要ないよね?
なんでこんなこと書いてるんだろう
421 = :
英語版にはちゃんとした事書いてたりするけ?
422 = 411 :
事故解決してたんだけどありがとう。
ただAppModelは相変わらずわかりません。
どのタイミングでロードすればええんですか?
Hook系もだめぽでした。
423 = :
>>422
>>419-420 の方法じゃだめなの?
クラス名 MY_ つけなくてもいけるっぽいから
AppControllerにしとけばいいんじゃ
よくわからん ルールだなあ
おれはてっきり Controller そのものを置き換えてくれるとおもったんだが
ライブラリとかヘルパはそうだよね
424 = :
>>422
コントローラはMY_Controllerをextendsして書いてるが、
モデルは仕方ないので各モデルの冒頭で
<?php
require_once(APPPATH."libraries/MY_Model.php");
class Hoge_model extends MY_Model
425 = :
$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 = :
>>425
Database に、escapeしないでsetする方法ってあったっけ?
それがsetメソッドなら、
$db->エスケープしないset('create_at', '式');
$db->insert('テーブル名') でいけるような気がする。
以上想像。なければ、Databaseを拡張する必要があるかも?
俺もこの辺知りたい。ソース嫁って感じだけど
427 = :
NOW()とかも文字列として扱っちゃうから
date('Y-m-d H:i:s') にするしかないと思う
オレは
function now()
{
return date('Y-m-d H:i:s');
}
っていう関数を作ってある
428 = :
>>426-427
さんくすです。
できないみたいなので、
fuction current_timestamp() {
return date('Y-m-d H:i:s');
}
を使うことにしました。
でもこれだと、application server と database server が別だと
時刻を必ず揃えておく必要がありますね。
429 = :
>>428
サーバの管理がきっちり出来ていれば、どんなサーバも1秒と違わないはずなので、時刻で
よっぽどシビアなソートやチェックをしていない限り、それは大丈夫かと。
また、原則からいうなら元々どちらかに合わせるべきなので、DBの関数が使えない時点で
application側の時刻のみを使うのが必然となるかな。
サーバ間の時刻あわせとは、微妙に話が違うような。
431 = :
うちでは、まず 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 = :
>>431
なんちゅうか、バッドノウハウの香りがw
> gettype で 'string' でも 'boolean' でもNULL でもない値はスルーしてくれる
っていう実装自体も、それに依存してるっていうのも、なんだかなあw
オブジェクトを渡されて、上記みたいにすることも前提にしてるのかな?>CI
(それなら、素直にescapeを回避するset系メソッドをつければいいのではと)
433 = :
>>432
どうみてもBKです。本当に(ry
CI内部の実装依存だからCIをバージョンアップすると動かなくなるかも。
個人的には、gettypeを見て判定、の部分はとりたてておかしなコードでは
ないので、マイナーバージョンアップであれば大丈夫だろうという甘い期待w
最悪、mark_as_safe で grep して置き換えれば、なんとかなるだろうとかw
素人にも玄人にもオヌヌメできない。\(^o^)/
434 = :
ってよくみたら set($key, $value = '', $escape = TRUE) って
第三引数があるじゃねーかw
$this->db->set('created_at', 'NOW()', FALSE);
で多分いけるね・・・ orz
435 = :
>>434
でもそれだと
$this->db->insert('tablename', array('created_at'=>'NOW()'));
とかができないよね。
431の方法のほうが個人的に好み。
436 = :
そういうの考えるのが面倒くさかったので、デフォで$this->db->insert($tablename, $valuearray);時は
created_atに作成日時をつっこみ、$this->db->update($tablename, $valuearray);時はupdated_atに
更新日時を突っ込むようにCI_DBを変更して使ってる。
バッドノウハウなのは百も承知だが、symfonyから流れてきた人にはこれが手放せないのよorz
438 = :
いつの間にか1.5から1.6になってる。
なんかかわったの?
441 = :
CI使ってる人間ってどれぐらいいるんだろうか
442 = :
17人
447 = :
>>446
ヒント
config/routes.php
http://codeigniter.com/user_guide/general/routing.html
http://userguide.cilab.info/general/routing.html
448 = :
>>447
ありがとうございます!
449 = :
Routingについて質問です。
ユーザーズガイドの例にあったのですが、
$route['product/:num'] = "catalog/product_lookup";
という設定をした場合、「:num」の値は Catalog->product_lookup() の中で
どうやって取得すればいいのでしょうか。
通常だと Catalog->product_lookup() の引数にこの値が渡されますが、
試したところ、$route[] を設定した場合は渡されないようです。
450 = :
>>449
英語のドキュメントに書いてありました。
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
でいいみたいですね。
お騒がせしました。
みんなの評価 : ○
類似してるかもしれないスレッド
- [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
トップメニューへ / →のくす牧場書庫について