tetu式

ゲームと音楽・作曲の自己満足と悩みどころの多いプログラムのブログ。

fuelPHP Fatal Error Model Not Found

主に自分ではなくて別の方が引っ掛かっていた部分。
Eclipse上でModel名を打ってしばらくすると使えるfunction一覧が出てくると思います。

これが出てくるということはモデル名を正しく入力しており、呼び出せるものとして認識してしまいがちですがfuelPHPでは微妙な落とし穴がありました。
自分がエラーの原因を見ていても何も変なところはないように見えていたのでコード以外のところで何かダメなんじゃないかと思い、fuelPHPの基礎に戻ってみました。

fuelPHPの初歩的なものですが、コーディング標準について。

fuelPHPのコーディング標準にて書いてあることでした。

ファイル名は全て小文字で。例外はありません。

の一文。

自分がphpのコードファイルを書く時、ファイル名は意識せずに小文字にしていました。
phpファイルはブラウザでも直接アクセスできるファイルなのでたまに直打ちすることもあります。
多分URLの文字を直打ちする時に大文字が出てくると「ちっ」って思ったからだと思います・・・
実際通常のアドレスはほぼどんな場所でも英小文字、ドット、スラッシュ、数字、単語をつなげるハイフンやアンダーバー程度かと思います。
外国だと大文字を使ってるところも結構あるらしいですが。

で、今回の原因は案の定ファイル名の頭文字が英大文字になっていたことが原因でした。
直接アドレスに関わらない部分だからいいのかなーとも思ってましたが許されなかったみたいです。


以下、駄文。


今回の件でURLは何故小文字ばかりなのか、ちょっと気になって軽く調査。

調べるとOSによって小文字と大文字を区別するかしないかが割れてるようです。
UNIX系は区別してるらしい・・・
あれ、そうだったっけ? と思ってLINUXでtest.txtとTest.txtを同じフォルダに作ってみたら、ちゃんと別々のファイルとして保存してくれました。
Windowsだとそうは行きませんでした。(後ろに(2)とかがつく)

URLのドメイン部分についてはどれだけ大文字小文字を織り交ぜても同じサーバーに飛びますが、それ以降のファイルを示す部分は大文字小文字を区別して見るようです。

Webサーバーと言えばLINUXApache、という人が大半でしょうが仮にWindowsのサーバーだった場合はひょっとするとパス部分も大文字小文字の区別をせずに見れるかもしれませんね。

試しに大手サイトで実験。
大抵のサイトは独自404を表示。一定時間でドキュメントルートのデフォルトページに移動するものも。
yahooはドメイン以外の部分を大文字に入力し直してアクセスしても勝手に小文字に変換し直してアクセスしました。そういう対策でもしてるのでしょうか・・・


調べた結果としては別に小文字だけじゃなくて大文字も使える。
大文字を使う理由みたいなものも検索してみましたがはっきりとした答えはありませんでした。
ただ単に小文字が読みやすいということ、キーボード直打ちの基本が小文字だからというだけかもしれないです。
あとSEO的にも宜しくないという情報も。

abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

試しに打って並べてみましたが、大文字はとがった文字が読みにくい気がします。
mとMなんかは大分印象が違います。
あとは形が近い数字があるっていうのも。
良くあるのはイチ(1)と小文字のエル(l)と大文字のアイ(I)、ゼロ(0)と大文字のオー(O)とか。
フォントやサイズによってはゼロとオーは見た目で判断出来ないレベルだったりします。
小文字だと縦幅が違うので簡単に判別出来ますね。

書き順ではゼロは右回り、オーは左回りだったと思います。
意識して守ったことなんてほとんどないですが、オーは筆記体で書くのをイメージして必ず左回りにしてます。
ゼロの方は気分次第。連続で書く時は右回りの方が書きやすいかも。