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

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

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - Rapyd + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    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";
    でいいみたいですね。
    お騒がせしました。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - Rapyd + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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