CodeIgniter Part3 [転載禁止]©2ch.net
CodeIgniter 3.0の日本語訳は現時点ではありません。
codeigniter.jpのほうは更新されてないので閲覧非推奨。 乙ー。スレ落ちてたのかな
そういや3.0触ってないなぁ 10レスとかないと落ちるんだっけか
使ってはいるから落ちないで欲しいが、ほんと枯れた使い方なので語ることがないんだよなぁ ではブリティッシュ・コロンビア工科大学について語ろう ブリティッシュなコロンビアなのにカナダにあるんだぜ 東京ドイツ村なる施設が千葉にあるぞ。
それは置いといて、どんな学校で何の目的でCI取得したのかとか確かに興味あります
まとまってる情報見たことないんだよな。英語苦手だけどその大学のサイト漁るのが手っ取り早いのかな もう十分に枯れているのだから、変に学生のおもちゃにしたりせずに、
脆弱性対応などの最小限の更新を粛々と末永くやって欲しい そう?
保守してくれるだけでも御の字だから、学生のオモチャにする分には構わんかな
ライセンス問題も解決済みだし万一肥大化しまくったり壊れまくるようなことがあってもフォークできるしね
まともな大学ならそこらの個人や中小企業よりは末長く、行儀正しく枯れさせてくれるのではないかと期待 日本ではあまり普及してないけど世界的には多用されてるフレームワークらしいね <?php
$lang['required'] = "%s は必須項目です。";
$lang['isset'] = "%s を空白にすることはできません。";
$lang['valid_email'] = "%s が正しくありません。";
$lang['valid_emails'] = "%s が正しくありません。";
$lang['valid_url'] = "%s が正しくありません。";
$lang['valid_ip'] = "%s 正しくありません。";
$lang['min_length'] = "%s は %s 文字以上で入力してください。";
$lang['max_length'] = "%s は %s 文字以内で入力してください。";
$lang['exact_length'] = "%s は %s 文字でなければいけません。";
$lang['alpha'] = "%s は半角アルファベットで入力してください。";
$lang['alpha_numeric'] = "%s は半角英数字で入力してください。";
$lang['alpha_dash'] = "%s は半角英数字、アンダースコア(_)、ハイフン(-)で入力してください。";
$lang['numeric'] = "%s は数字で入力してください。";
$lang['is_numeric'] = "%s は数値で入力してください。";
$lang['integer'] = "%s は整数で入力してください。";
$lang['regex_match'] = "%s が正しい形式ではありません。";
$lang['matches'] = "%s と %s が一致しません。";
$lang['is_unique'] = "%s は既に存在しています。";
$lang['is_natural'] = "%s は正の整数で入力してください。";
$lang['is_natural_no_zero'] = "%s は0より大きい整数を入力してください。";
$lang['decimal'] = "%s に小数点を使うことはできません。";
$lang['less_than'] = "%s は %s より小さい数を入力してください。";
$lang['greater_than'] = "%s は %s より大きい数を入力してください。"; 3.0の和訳がほしいけどない。。
ドキュメントの内容も少ないので別に和訳がなくても機械翻訳でもいいんだけどやっぱり英語初心者にとっては和訳のほうが効率がいい。
codeigniter.jpも活発じゃないので有志で翻訳やれたらいいなとは思う
transifex使って翻訳しようと思ったけど設定とか使い方がよくわからず挫折した 変更点多いなあ
phpの最低バージョン上げてphp5スタイルに統一したってのが取り敢えず目玉の一つかな?
いろんなクラスに手が入っててバグフィックスも大量
構成見直しとか肥大化に向かってなさそうなのはいいね
Composerの言及あるな。よく聞くけど使ったことないな。便利なのかな 3.xはまだ開発途上みたいだからとりあえず2.x選んだけど…
ライセンスの問題もあるし、3.xにしたほうがいいのかなあ 3.xはまだ開発途上?
正式版がリリースされていますけど。 ライセンス問題が解決したのでFuelPHPとLaravelを捨てて戻ってきた 捨てたか
Fuelのoilとか楽だけどな
マニュアルと格闘するたびCIの最小限っぷりに戻りたくなるときはあるがw CSRF対策について質問があります。
特定のページだけCSRF対策をする方法はあるのでしょうか?
config.php に、
$config['csrf_protection'] = TRUE;
と書くと、アプリケーション全体(POST処理するページ)にCSRFが効いてしまい
ますし、config.phpではなくコントローラのコンストラクタに書いてもCSRFが動作
しないのです。 >>22
CI知らんけど
http://blog.voltampmedia.com/2012/03/24/whitelisting-codeigniter-urls-from-csrf/
でできそう
application/config/config.phpに追加
$config['csrf_protection'] = TRUE;
$config['csrf_exclude_uris'] = array('controller1','controller2','controller3/method1','controller3/method2');
system/core/Security.phpを変更
https://github.com/VoltampMedia/CodeIgniter/commit/f9590bc57d06ba23c30b70c8dafe16598fdf047c >>23
ありがとうございます。
遅いレスですみません。
試していませんが、紹介いただいた方法で、できそうですね。
Coreを変更する必要があることが、ちょっと引っかかりましたが。
CSRF対策を自分でコーディングすることはできますが、自分で実装すると
セキュリティ上の穴ができろうな気もするし。。。
悩みどころです。 ApacheのAlias ディレクティブでURLを指定しているとき、CodeIgniterの
プロジェクトルートにある .htaccess の設定がわからん。
それと、画面遷移するとき、redirect()を使うのは普通のやり方なのでつか? CodeIgniterでのユニットテストプログラムは、
標準のを使うのがよいですか?
それともPHPUnitがよいのでしょうか?
標準のユニットテストライブラリのほうが簡単な気もしますが、
PHPで広く使われているPHPUnitにしたほうが
何となくよさそうだし・・・ テストをすることが目的になってるのが間違い
好きなの使えば良い おすすめの入門サイトやソースがたくさん読めるサイトってありますか? マニュアルの出来が良すぎるので、他のサイトは知らん。 CodeIgniterを使ってて、Laravelに浮気した。
しかし Laravel 5 がクソ過ぎて、CodeIgniter に戻ったよ。
Laravel で作ったサービスが1本も本稼働しなくてヨカッタ。 >>34
>しかし Laravel 5 がクソ過ぎて
そうなんだ
ララベルって人気あるんでしょ? セッションをクッキーに保存しても改ざんされたりしないの?暗号化されているとはいえ怖いです あれこれ他のをかじってみたが、
軽さ、容易さ、自由さ、どれを取ってもCodeIgniterが一番良いと思った。 Ion Auth の自動ログイン機能(remember機能?)について教えてください。
自動ログイン機能をOFFにしたいと思って、
$config['remember_users'] = FALSE;
にしましたが、次回からも自動的にログインしてしまいます。
Ion Authで自動ログイン機能をOFFにするにはどうしたらよいのでしょうか? SQLのWHERE句を動的に組み立てる良い方法しりませんか? >>42
$where = ["条件文1", "条件文2", "条件文3"];
implode(" and ", $where)
かな。 >>43
ありがとうございます
db->whereを動的に呼ぶことで解決しました CodeIgniterの本って全然無いよね
「CodeIgniter徹底入門」ってのは2008年で古すぎるが
かといってそれより新しいのが無い ほんとにね。入門書がないと新規ユーザーが増えないだろうから心配
とはいえ実のところ、俺はネットの情報だけで普通に使えてしまったし、トレンド技術取り込むのはFuelあたりに任せておけば良いとも思うから保守続いてりゃいいかな感もある オンラインのマニュアルが秀逸すぎて書籍は必要ないのだが、
書籍がないと新規ユーザが増えないというジレンマ。 Ion Auth、素晴らしい。
使いやすいし設定変更も容易だし、DBのスキーマ設計も綺麗。
FuelPHPでSentryを使ってみたが、仕様が今一つ。使いにくい。
FuelPHPのOrmAuthはDB設計が複雑怪奇。 そんなに違うんだ
ここ数年awsばっかで認証実装自前でやってないな……… 認証みたいな責任の重い処理はできるだけ外に出したい…
ほんとはそういうところこそ勉強するべきなんだろうけど >>51
同感です。
ゼロから自分で作ってもそんなに多くの時間はかからないとは思うけど
極力手をだしてはいけない領域な気がする。
広く使われているという”実績”はとても大事。 CodeIgniter3で使えるDBのORマッパークラスってあるんでしょうか?
簡単な 1対1 や 1対多 のリレーションを取ってきたいだけなのですが。 あれ、CI使いがORM欲しくなったらFuel導入・移行のタイミングなのではないかと。
まあCIとの違いも細かく多岐に渡るから一概にお勧めする訳じゃないけど
作り直しで問題ない案件なら移行コストはすんごく低いよ
帰宅後の手探り学習でも基礎抑えるまで一週間ありゃ足りる。あとは元ソースの規模次第だけど、コアに手入れてた案件でもそんな苦痛はなかった CodeIgniter使ってた人の乗り換え先としてはFuelが良いってたまに聞くけどそうなのかな 似通ってるとは言えるよ
ただ、それでも機能は増えてるからね
Fuel覚えたけど小規模な新規案件ではめんどくなってCIでやっちゃう、っていう併用者や出戻り組もよく聞く話 CakePHP2→3を検討したけど、
・PHP5.4以上でないといけない(案件、クライアントのサーバーによっては古いのも未だにある)
・モデルがモデルとエンティティに分かれてサクッと作れなくなった(ZF1→2みたい)
それでCIの早さ、2→3になってもほとんど構造が変わらない、
ライセンス騒動が解決してることに魅力を感じて乗り換えた >>57
>それでCIの早さ、2→3になってもほとんど構造が変わらない、
>ライセンス騒動が解決してることに魅力を感じて乗り換えた
それ正解だと思うぞ。 ありがとう
あとはもうちょっと普及してくれたらありがたい CIは十分普及したと思うんだけどね
先にもあったけど書籍が出てないのと、そもそも必要充分にかれてて、革新的な新機能を求める新規ユーザで賑わう状況にはない
ライセンス問題の解決はいささか旧聞だけど、このシンプルさを保守し続けてくれることが何よりの喜びだと思う
新機能や発展性、活発さとかはFuelに任せておこう、っていう棲みわけもできてるしね
Cakeは変更が多くて悩ましいね。改善が活発だという事でもあるから批判はないけどね
CIはうまく保守続けばPHP7世代の末期まで大きな変化がないまま続くんじゃないかなと期待してる CI用のライブラリ置き場がネット上にあると良いんだけどな。
Smartyを使うライブラリとか、PHPUnitのとか、NetBeansやPHPStormの
関数補完用のファイルとか。
みんなバラバラにHP上にあるし、違うものが複数あったりするので。 「はじめてのフレームワークとしてのFuelPHP」
をCI3.0に書き直したものがほしい。 静的型付け言語に回帰してる風潮でスクリプト言語離れが進んでて
phpどころかrubyでさえもオワコン化してきてるって言うのに
そのphpでメンテもされてない5.2とか推奨のciが盛り上がる訳がない >>66
PHP5.4以上が推奨だが
PHP 5.1.6 is no longer supported. CodeIgniter now requires PHP 5.2.4 and recommends PHP 5.4+ or newer to be used. 確かにphp=wpの言語ってイメージが強いし
Framework乱立で自滅してオワコン感はある
だからと言ってscalaとかgoが主流になるとは思えん
今後はどうなっていくのかね 流行りで言うとnode.jsかな。主流でもないけどwebsocketやりたい人が最初に試す環境になったと思う
最近GAE/goやってみてるんだけど、良いものなんだけどクセが多いからお勧めしにくい言語・環境でもある。主流になる日は当面なさそう
必要に応じて言語選ぶ時代になってると思うから、php+CIって構成も消えないでいてくれれば御の字かな
盛り上がって欲しくないわけではないが 趣味でやるなら流行りのFWを選べばいいけど、業務アプリとか
公式サイトとかだと、最低でも10年は稼働すると思う。
その間安心して使うには、頻繁にバージョンアップしない
ものがいい。
Laravelなんて、実務で使われているんかな。
俺は怖くて使えないけど。 view側でcontrollerのメソッドを利用したいんですが
どういう書き方をすればいいでしょうか?
初心者ですいませんがどなたか教えて下さい >>71
もうできてるかもだけどget_instanceでコントローラのインスタンス取得できるでしょ codeigniter動かすならapacheの方がいいでしょうか?
ほぼ動的コンテンツになる気がするのですがnginxでCI使ってる人も多いようで迷います codeigniterと相性が良いのはapacheかnginxか、という意味かな?
よくわからん・・・ >>74
そうです、サーバーに関しては全然わからなくて質問が変かもしれませんが…
codeigniterで静的コンテンツを配信することってあんまりない気がするんですが
どういう選び方すればいいんでしょう?
よく例にあがるnginx リバースプロキシ+apacheで、画像やCSSやJSファイルのみnginxで
実際DBから情報とってきてHTML出力するのはapacheってのが定番なんでしょうか? 質問が変すぎて回答できないよw
codeigniterとWebサーバの種類は無関係だろ。
codeigniterはフレームワークの中では一般に速いと言われている、という
位の回答しか出来ないなぁ・・・
それtとも熟達者が適切な回答をくれるかな? PHPとサーバの組合せならあるかもしれんが、PHPの中でCodeIgniterが向いてるサーバとかSymfonyが向いてるサーバとかは無いと思うぞ。 >>76,77
フレームワークというよりPHPに向いてて、動的か静的かなどで見ればいいんですね!
これ以上はサーバーの話になるのでスレチになりそうですから失礼して、意見を参考に勉強したいと思います。
ありがとうございます。 xammpでapache+ci2という構成で作っていたものを
vagrant+centos6.7+nginx+php-fpm+ci3という構成にローカルからローカルへ移しています
よく分からないのが、まず前者の構成のときにroutes.phpが
$route['default_controller'] = "home";
$route['(:any)'] = "home/$1";
で、.htaccessが
RewriteCond $1 !^(index\.php|css|js|robots\.txt)
RewriteRule ^(.*)$ /Codeigniter/index.php/$1 [L]
として問題なく動いていたのですが
nginxではroutes.phpはそのままにnginx.confで
location / {
try_files $uri $uri/ /index.php?/$request_uri;
}
とすると、例えばですがexample.com/test (::Home function test(){}など)は問題ないのに
example.com/hoge/arg
とすると404になってしまいます。::Home function hoge($arg){}といった引数をとる関数なのですが。。
結局routes.phpに手を入れて
$route['hoge/(:any)'] = "home/hoge/$1";
としたら動いたのですが、腑に落ちません。.htaccessで出来ていたことがnginx.confでは出来ないとかあるんでしょうか?
nginxのスレで聞こうか迷ったのですが、こちらでどなたか分かる方がいればお願いします 80ですが、原因が分かりました。
routes.phpの(:any)がスラッシュにマッチしなくなったというのはドキュメント見て知ってたんですけど
これが原因でした。
(:any)では/hogeまでしか取ってくれてなかったためargが渡っていなかったようで
(.+)に変えることで今まで通りの動作になりました
>一方でこのバグを活用していた開発者もいることでしょう。 もしあなたがその一人で、引き続きスラッシュにマッチさせたいなら、 正規表現 .+ を使ってください:
これ、自分が当てはまってるとは・・・ しかしexample.com/index.php/products/shoes/sandals/123
というようにメソッドへ引数をスマートに渡せるのが気持ち良いのに、この(:any)の変更って他にハマる人いなかったんですかね・・・
おかげで1日潰しました・・・ww is_mobileで動的に切り替えてるのですがgoogle のモバイルフレンドリーテストに合格しません >>70
思う思う。地道にセキュリティ対策で改良してくれればいいのに
メジャーバージョンアップしたらソース引き継げないのはひどすぎ 今メジャーバージョンって一般的なsemverの意味合いでは「APIなどに互換性がなくなる規模の改修」を指すからそれは仕方ない
心配の本質は「ころころ打ち切るな!せめて簡単にマイグレーションできるようにしてくれ!」ってことだよねw
その点CodeIgniterは天国だ。今回のメジャーバージョンアップで何も苦労しなくて逆に引くレベル CodeIgniterのライブラリ倉庫みたいなサイトはあるんでしょうか?
PHPにおけるPEARやPECLみたいなものです。 CodeIgniterも少し手の混んだことをするとバージョンアップ追従するのに苦労しそうだが メジャーバージョンアップでソースが使いまわせなくなったって文句言うのは、
ドラゴンクエスト1の復活の呪文がドラゴンクエスト2で使えないって文句言うようなもんだ。 なるべく運用中のシステムのメンテナンスに掛ける労力を節約して、他の多くの仕事を
請け負ったり、新しい分野のスキルを習得して新規案件に対応したいと思わんのか?
ドラゴンクエストだけやってりゃいいなら、いいけどね。 >>89
最近のゲームは引き継げるんじゃないの?知らんけど ちょっと感動したことがあったので書いておく。
cakeならサイト訪問者のログイン用と管理画面用とでセッションを分けたいとき
セッションクラスに対して名前を指定すればできたけどciではそれができなかった。
そこでENVIRONMENT定数を使い分けて管理画面用のコンフィグファイルを作った。
公式のユーザガイドにはこう書いてあった。
>もし、ファイルが存在しなければ、グローバルの設定ファイルをロードします。
>これは、あなたは すべての 設定ファイルを環境固有のフォルダに置く必要はないこと、
>環境により変更するファイルだけを置けばよいことを意味します
今のところ管理画面用として分けたいのはセッション名だけでそれ以外は共通。
にも関わらずconfig.phpを丸ごとコピーして置かないといけないのか?
そんな心配はなく環境固有の設定ファイルがあってもグローバルの設定を先に読んでくれるから
管理画面用のコンフィグファイルにはセッション名の項目だけを書くだけでよかった。 Ver3のマニュアルってcodeigniter.jpは作ってないの? ないよ
3からのチェンジログを本家で追いかけるのが最短かな Ver2から書き方とか使い方が大幅に変わったとかないように見えるが 大幅に変わってないのにメジャーバージョンアップなのか むしろバージョンアップしても互換性が保持されてると考えると悪いもんでもないとおもうが ライセンスの変更により極幅に変わったに違いない お察ししる!