1/30土、PHP『 超 』初心者勉強会に参加して来ました。
1/30土、PHP『 超 』初心者勉強会に参加して来ました。
日頃既存のPHPプログラムを自分なりにコピペして使ったりはしているのですが、基本的な所から教わりたいと思って参加しました。
まずXAMPP(ザンプ)を起動してApacheをスタートして、testディレクトリの作成しました。この際、MacOSXではターミナルから操作してあげる必要がありました。

そしてindex.phpをテキストエディタで作成して、ウェブブラウザでhttp://localhost/xampp/index.phpを見ると、index.phpが動いていることを確認できました。ちょっと嬉しい。
PHPはhtmlに埋め込み、連携させることを前提に作られた言語なので簡単ですよ、とのこと。
phpの開始と終了は次のタグで囲むこと。
<?php ?>
文字の出力はprintまたはecho(他の言語に慣れている人向けに複数用意されているのでどちらでもいい)。改行を入れる時には<br />。変数には$記号で宣言する必要がある。型指定は必要ない。値を代入した時点で型が決まる。
<h1>index.php</h1> <?php print "hello PHP!"; echo "<br />"; echo "表示にはechoでもprintでもいい"; echo "<br />"; echo "改行は原則として<br />"; echo "<br />"; echo "変数には$記号で宣言する必要がある"; echo "<br />"; //phpは代入した時点で型が決まる。 $var = 2+3; $var += 2; print $var; ?> <hr />
日頃AS3を書いている身からすると、この「型指定は必要ない」というのがどうも気持ち悪い。内部的にはちゃんと型があるみたいなのに。まあ、慣れなんだろうけど。なんにしても、こういう違和感をその場で聞けるのは対面授業の良い所。「簡略化した書き方」なのか「スタンダードな書き方」なのかが書籍だと不安に思う場面が少なくない。今の自分の理解力(AS3は使える。PHPはたまにコピペでいじる程度)に適したちょうどいい説明の本もあるんだろうけど、それを見つけるのが大変だし。
ちなみに、外部テキストを読み込んだ場合に、改行コードを一気に<br />タグに置き換えるのはnl2br()という関数を使うらしい。
続いて配列。
<?php
//配列
$arr[0] = "a";
$arr[1] = "b";
$arr[2] = "c";
print($arr[0]);
echo "<br />";
var_dump($arr);
echo "<br />";
//連想配列
$time = array();//初期化してもしなくてもいい
$time["year"] = "2010";
$time["month"] = "1";
$time["day"] = "30";
echo $time["day"];
echo "<br />";
var_dump($time);
echo "<br />";
//入力順に出力
foreach($time as $key => $var ){
echo "$key = $var <br />";
}
var_dump($_SERVER);
?>
初期化しなくてもいいというの以外はASの使い方とほぼ同じ。ただし、連想配列も入力順に入っているらしいので、これは便利。
あと、var_dumpで一気に見れたりもいいね。
今回の「超」初心者勉強会は以上の内容でした。見直すと少ししか無いけど、まあ、そういうものですね。特に参加者の環境を整えるのに時間がかかってしまっていました。XAMPPが他のソフトウェアとぶつかることがあるみたいで、いろいろ環境変えたり、ブラウザのプラグイン外してみたいり、、。ウチでFlashとおやつの会をやる時はFlashIDEに限定しているからまだ楽なのかも。今後、FlashIDEに限定しない、AS3.0とおやつの会をやろうかと思っていたけど環境整えるのが大変そう。IDEはFlashIDE/FlashDevelopを推奨としつつも、共通の環境としてはwonderflに逃げられるようにしたほうがいいかも。
今後も初心者勉強会があるみたいなので、ちょくちょく参加させてもらうつもりです。そうしないとすぐ忘れるし。会場と自宅が近所というのもポイント高い。かなり気軽。
▼PHP初心者勉強会
http://php-beginner.net/php-beginner/Information/Information.html



phpでの型の存在って凄く難しいです。
型を気にせずかける良さもあります。
(制御構文によっては一致しない型でもキャストして比較してくれたりする。)
しかしforeachはarray型でない変数を回そうとすれば内部サーバエラーです。
whileはarray型でない変数を回そうとすれば、そこの制御はスキップしますので、エラーとならないです。
この型をあまり意識しないで制御が出来る故、ifの制御構造で比較演算子を適当に書くとバグの元となりえることがあります。
http://php.net/manual/ja/language.operators.comparison.php
なので、型指定はせずとも、変数名に型のヒントとなるような名前をつけると、変数名でどういう値かというのが分かり、比較的バグが発生しづらいプログラミングが出来ると思います。
ex.
array型:$testAry
boolean型:$testFlag
int型:$testNum
などなど。
システムハンガリアンってやつ?
うーん、そこまでやるんだったら、型指定しちゃえばいいのに。
言語自体は(型の部分での)おせっかいはしないで、
IDEが人のミスをカバーする方がいいような。
なんにしても、phpを使う際、気に留めておきます。ありがとう。