-
entry000247
comments
以前から入れようと思っていて先延ばしになっていた PHP をセットアップしました.
現在運用している apache2 が worker で動いているので,セットアップも多少注意が必要でした.セットアップだけではなく動作も不安といえば不安なのですが,特にクリティカルな用途でもないので,問題が起きてから対処したいと思います.(ファイルロックあたりが多少不安)
今後,複眼中心 に倣い,麦酒堂もインタフェースを php 化してゆく予定です.
MTEntryMore
コメントを登録する
麦酒堂ではコメントスパムを防止するために,いただいたコメントは管理人が手動でサイトに反映しております.
反映までしばらく時間がかかりますので予めご了承ください.
おー、着々とタスクをこなしてますな。最初のころはオレが教えられるけど、さっさと追い抜いてオレに教えてください。
とりあえずmizはWebのリソースから学んでいくタイプだと思うんで、それに対する注意点。2002年にリリースされたv4.2より以前はregister_globalsがオンになってるんで、ユーザの入力が$fooって形で参照できたんだけど、v4.2以降は$_POST["foo"]または$_GET["foo"]って形で連想配列からじゃないと参照できなくなってる。古いリソースを参照するときは、ここを変換して使ってね。register_globalsがオンだと、以下のようなスクリプトを組んでると危険。
[foo.php]
これに <LINK> とアクセスされると、パスワードが漏れる恐れがある。なんで、register_globalsはオフで。
ボクが使ってる参考書籍は以下の4冊がメイン。
PHP4徹底攻略
<LINK>
「(赤)マンモス本」として定番。ってか、昔はこれしかPHPの本がなかった (^^;
PHP4徹底攻略 実践編
<LINK>
「青マンモス本」として定番。文字通り赤マンモス本より実践的
PHPスーパーリファレンス
<LINK>
リファレンスにとどまらず、サンプルとかも便利。情報も新しい
PHP4逆引き大全
<LINK>
たまに便利なときがある
あー、確認してから投稿したらタグが削除されちゃったよ (/_;)
[foo.php]
<?php readfile($file); ?>
もう1個はあれかな。PHPの場合、変数は明示的に宣言しない限りローカル変数になってる。
PHP - 変数のスコープ
<LINK>
おぉ.いろいろ情報ありがとう.がんばって勉強します.
実は,「セットアップしてしまったら,ほかのことが手につかなくなるのでは」という懸念が現実のものとなってしまい,今からの教授Mtg.がちょっと恐ろしいです.
気持ち悪かった,JSでの背景色切り替えを PHP で実装し直しました.まだ一部 JS のままですが,順次 PHP に移行してゆきます.
<LINK>
いやぁ,PHP 良い.
PHPは簡単なことが簡単に書けていいでしょ? しかも、CとかPerl知ってる人は、ほとんど勉強しないですぐ書ける。
ちなみにlist.phpだけど、97行目の</td>と</tr>が逆になってまーす。
いいね~.型定義できないのがちょっと気持ち悪いけれど,その分,楽で良いね.
list.php ご指摘ありがとう.修正しました.
型キャスト程度ならできるよ。
<LINK>
$s_foo = "123";
$i_foo = (int)$s_foo;
if(is_int($i_foo)) echo "整数です";
あと、===と!==演算子をうまく使っていく。
<LINK>
情報ありがとうです.
なるほど,内部では型を持っているのだね.それも加味して,list.php を多少変更してみました.
変数にバインド可能な値の型は定義できないのかな?
$a = (int) 0;
$a = (string) 0;
が許されるのは,やはりちょっと気持ち悪いなぁ.OOP も可能ということだったと思うけれど,その場合もどんなクラスでもバインドできてしまうのかな. java で言うと,全変数が Object で宣言されている状態.
えーっと、「変数にバインド可能な値の型」ってどういうことでしょ。バインド……?
えと,java や C で言うところの,
int a = 0;
のような型宣言です.int 型で宣言された変数には string 型を代入できなくなる.バインドというのは,変数に値を代入する事を指します.
int a = 0;
a = 0;
a = "0"; // <-- エラー
となってくれると,大規模なコードを書くときは何かと嬉しいです.とはいえ,こういう堅苦しい部分をはしょれるのが,この手のスクリプト言語の良いところではあるのだけれどね.
あー、それは確かにできない。だから、大きいプログラムの場合は、$s_fooとか$i_barとか、型を接頭語にした変数にボクはしてる。
もうちょっとヤバげな話だと、変数の初期化を忘れても問題ないところかな。register_globalsをオンにしてると、これは致命傷になりかねない。php.iniのerror_reportingをE_ALLにしておけば、初期化忘れ(E_NOTICEレベル)も警告してくれるようになるよ。
ただ、公開サーバの場合はこの警告が予期せずユーザの利用中に出ると無粋だったり、セキュリティ上の問題になるって場合は、エラー制御演算子「@」とか、エラー処理関数の「error_reporting」とかを使ってみて。
<LINK>
<LINK>
おぉ,ハンガリアンw.
<LINK>
error_reporting を変更してみました.list.php に関しては,警告が出なくて一安心です.
へー、これってハンガリアン記法っていうんだ。しかも、MSの技術かよw ボクが最初に読んだPerlの本でそう書いてあって、そっからそう書くことが “多い”。で、この “多い” ってのが問題で、命名規則がプログラムによってコロコロ変わるし、変数の名前に形容詞を使うとき名詞の前 ($redBox) だったり後だったり ($box_red) はひとつのプログラム内でもゴチャゴチャ。どうにかしないとねー。
ってか、PHPの関数名の命名規則もどうにかしてほしいね……。引数の順序も統一されてないし。
MS由来はぼくも知りませんでした.
ぼくは java を書くことが一番多いのだけれど,java ではあまりハンガリアンなことはしない傾向にあります.フィールドに変な接頭辞をつけるとアクセッサが汚くなるからね.
"getI_nodeId ()"
とか,気持ち悪いし.
ローカル変数については,どうだろう・・・.これもあまり使わないなぁ.そもそも,ローカル変数ならスコープがそれほど大きくないので,ハンガリアンを使う必要性があまりないしね.
唯一,インタフェースに "I" という prefix をつける設計は時々目にするけれど,ぼくはやらないです.