今日は朝からPHPをちょっとやってみたんですが、PHPのすごい点を1つ紹介したいと思います。
フォームから文字列を受け取る方法として、GETとPOSTがあるのは誰でも(やってる人なら)知ってる話だと思います。
GETはURLの語尾に文字列を入れて送信しますし、POSTは脳内送信みたいな感じなんですけども、
まぁどっちをどういう場合に使うかは別の機会にするとして、そのデータの受け取り方がPHPはすごいです。
例えば
<FORM action="hoge.cgi" method="post">
<INPUT type=text name="unko">
<INPUT type=submit value="送信するぜー">
</FORM>
みたいなHTMLタグを用意します。
この場合、
hoge.cgiにPOST形式でunkoな文字列を送信するという意味になるんですが、
実際にPerlでこのデータを受け取るまでには数行のおまじない的なプログラムを書く必要があります。
POST形式ならまだいいんですが、GET形式(URLに文字列が入る場合→この場合だと[ http://xxx.com/hoge.cgi?unko=文字列 ]みたいな)の場合、
大人の事情で2バイト文字列はエンコードされてしまいます。
例えば、unkoに入力された文字列が「aaa」の場合は
http://xxx.com/hoge.cgi?unko=aaa
になるんですが、
「あああ」のように2バイト文字になると
http://xxx.com/hoge.cgi?unko=%82%A0%82%A0%82%A0
とエンコードされます。
これはヴラウザの仕様なのでどうしようもなく、
またこれをPerlで受け取ると本来のデータは「あああ」なのに、「%82%A0%82%A0%82%A0」という文字列になります。
なので、2バイト文字を扱う場合、Perlでは文字列をデコードする必要があります。
といっても、Perlは文字列の処理に長けているので問題はないのですが、それでも無駄に構文が増えてしまうのは事実です。
Perlでのフォーム文字列の受け取りについて、ざっくりと覚えなきゃいけないものは
・変数
・配列
・if文
・foreach文
・ENV関数
・split関数
・文字列のデコード処理
こんなにあります。
初心者は他人が書いたものをコピペすればいいですが、
より柔軟なコードを書く場合はそれらを全て理解する必要があります、でもそれは初心者には難しいです。
私はPerlから入ったので、webプログラミングの最も大切な部分といってもいいフォームからの文字列受け取り部分にはかなり苦労しました。
逆に、ここをしっかり理解すれば、基本的なPerlの書き方の半分は覚えたも同然なんですが・・・。
で、PHPなんですが、死ぬほど簡単です。
先ほどと同様
<FORM action="hoge.php" method="post">
<INPUT type=text name="unko">
<INPUT type=submit value="送信するぜー">
</FORM>
とします。
PHPでは
$_REQUEST["unko"]
でOKです。
たった1行です。
これならぶっちゃけプログラムが書けない人でも大丈夫です。
if文も必要ありません。
しかもこれ、POSTでもGETでも対応できるんです。
文字列のデコードも自動にやってくれます。
ちなみにPOSTとGETで明確に分ける場合は
$_POST["unko"]
$_GET["unko"]
というように区別できます。
これは直感的に書けて素晴らしい!!
プログラムって、わからない人には疎遠されがちですけど、基本的には日本語や英語の文法と一緒です。
日本語と英語は全く書き方が違いますが、結果としての意味は同じです。
日本語「私は眠いです」
英語「I'm sleepy」
どっちも書き方は違います、でも意味は同じでしょ?
プログラムも同じです。
C、Java、BASIC、その他いろんな言語がありますが、
書き方は違えど、やることは一緒です。
Java
if (hoge == 16) {System.out.print("16っすよ");} else {System.out.print("16じゃないんですけども");}
Perl
if ($hoge eq 16) {print "16っすよ";} else {print "16じゃないんですけども";}
JavaもPerlもif文の書き方や、文字列の出力の書き方は違いますが、どっちも同じ処理をしています。
つまり何が言いたいかっていうと、1つの言語を理解していれば、他の言語を習得するのは容易ということです。
むしろ、日本語や英語の差と違い覚えることが少ないため、プログラムの方があきらかに簡単です。
私は初めて触った言語はBASIC(正確にはN88BASIC)なんですが、あれをやったおかげで今の自分があると思っています。
逆にプログラム言語を1つも書けない人の場合、どの言語から始めたらいいのか迷うと思いますが、自分の作りたいモノの方向性で考えるのがいいと思います。
例えばゲームが作りたいのにPerlをやるのは間違いですし、webプログラミングがやりたいのにBASICをやるのも間違いです。
あと、プログラム言語を1つもわからないのにゲームが作りたいからといって初っぱなC + DirectXから入るのは無謀です。
(外国語を習得するのに、大半の人が英語をやるのに対し、一人アラビア語をやるようなものです)
そういう人は別にHSPから始めてもいいと思う。
なんであれ、プログラムってそんなに敷居の高いものじゃないし、開発環境はほとんどの言語が無料だし、
マニュアルもネットでいっぱい見つかるし、サンプルソースもいっぱいあるし、複雑な処理はモジュール使えば楽ちんだし、
初めて風俗に行くより気楽だと思いました。
フォームから文字列を受け取る方法として、GETとPOSTがあるのは誰でも(やってる人なら)知ってる話だと思います。
GETはURLの語尾に文字列を入れて送信しますし、POSTは脳内送信みたいな感じなんですけども、
まぁどっちをどういう場合に使うかは別の機会にするとして、そのデータの受け取り方がPHPはすごいです。
例えば
<FORM action="hoge.cgi" method="post">
<INPUT type=text name="unko">
<INPUT type=submit value="送信するぜー">
</FORM>
みたいなHTMLタグを用意します。
この場合、
hoge.cgiにPOST形式でunkoな文字列を送信するという意味になるんですが、
実際にPerlでこのデータを受け取るまでには数行のおまじない的なプログラムを書く必要があります。
POST形式ならまだいいんですが、GET形式(URLに文字列が入る場合→この場合だと[ http://xxx.com/hoge.cgi?unko=文字列 ]みたいな)の場合、
大人の事情で2バイト文字列はエンコードされてしまいます。
例えば、unkoに入力された文字列が「aaa」の場合は
http://xxx.com/hoge.cgi?unko=aaa
になるんですが、
「あああ」のように2バイト文字になると
http://xxx.com/hoge.cgi?unko=%82%A0%82%A0%82%A0
とエンコードされます。
これはヴラウザの仕様なのでどうしようもなく、
またこれをPerlで受け取ると本来のデータは「あああ」なのに、「%82%A0%82%A0%82%A0」という文字列になります。
なので、2バイト文字を扱う場合、Perlでは文字列をデコードする必要があります。
といっても、Perlは文字列の処理に長けているので問題はないのですが、それでも無駄に構文が増えてしまうのは事実です。
Perlでのフォーム文字列の受け取りについて、ざっくりと覚えなきゃいけないものは
・変数
・配列
・if文
・foreach文
・ENV関数
・split関数
・文字列のデコード処理
こんなにあります。
初心者は他人が書いたものをコピペすればいいですが、
より柔軟なコードを書く場合はそれらを全て理解する必要があります、でもそれは初心者には難しいです。
私はPerlから入ったので、webプログラミングの最も大切な部分といってもいいフォームからの文字列受け取り部分にはかなり苦労しました。
逆に、ここをしっかり理解すれば、基本的なPerlの書き方の半分は覚えたも同然なんですが・・・。
で、PHPなんですが、死ぬほど簡単です。
先ほどと同様
<FORM action="hoge.php" method="post">
<INPUT type=text name="unko">
<INPUT type=submit value="送信するぜー">
</FORM>
とします。
PHPでは
$_REQUEST["unko"]
でOKです。
たった1行です。
これならぶっちゃけプログラムが書けない人でも大丈夫です。
if文も必要ありません。
しかもこれ、POSTでもGETでも対応できるんです。
文字列のデコードも自動にやってくれます。
ちなみにPOSTとGETで明確に分ける場合は
$_POST["unko"]
$_GET["unko"]
というように区別できます。
これは直感的に書けて素晴らしい!!
プログラムって、わからない人には疎遠されがちですけど、基本的には日本語や英語の文法と一緒です。
日本語と英語は全く書き方が違いますが、結果としての意味は同じです。
日本語「私は眠いです」
英語「I'm sleepy」
どっちも書き方は違います、でも意味は同じでしょ?
プログラムも同じです。
C、Java、BASIC、その他いろんな言語がありますが、
書き方は違えど、やることは一緒です。
Java
if (hoge == 16) {System.out.print("16っすよ");} else {System.out.print("16じゃないんですけども");}
Perl
if ($hoge eq 16) {print "16っすよ";} else {print "16じゃないんですけども";}
JavaもPerlもif文の書き方や、文字列の出力の書き方は違いますが、どっちも同じ処理をしています。
つまり何が言いたいかっていうと、1つの言語を理解していれば、他の言語を習得するのは容易ということです。
むしろ、日本語や英語の差と違い覚えることが少ないため、プログラムの方があきらかに簡単です。
私は初めて触った言語はBASIC(正確にはN88BASIC)なんですが、あれをやったおかげで今の自分があると思っています。
逆にプログラム言語を1つも書けない人の場合、どの言語から始めたらいいのか迷うと思いますが、自分の作りたいモノの方向性で考えるのがいいと思います。
例えばゲームが作りたいのにPerlをやるのは間違いですし、webプログラミングがやりたいのにBASICをやるのも間違いです。
あと、プログラム言語を1つもわからないのにゲームが作りたいからといって初っぱなC + DirectXから入るのは無謀です。
(外国語を習得するのに、大半の人が英語をやるのに対し、一人アラビア語をやるようなものです)
そういう人は別にHSPから始めてもいいと思う。
なんであれ、プログラムってそんなに敷居の高いものじゃないし、開発環境はほとんどの言語が無料だし、
マニュアルもネットでいっぱい見つかるし、サンプルソースもいっぱいあるし、複雑な処理はモジュール使えば楽ちんだし、
初めて風俗に行くより気楽だと思いました。
簡単に扱えることがメリットだとしたらデメリットとして必ず、細かい融通が利かないってことがあるような気がしないでもないけどJavaもその辺うんこちゃんだし確かに初めてシリーズの方々には入りやすい仕様なのかもしれないと感じたでもあんたの言う通りプログラムを書くだけならウンコでも出来るわけでどの言語から入ろうが結局その人次第ってわけだしどうでもええわって思うそれより俺の部屋幽霊でるんだけど早く来て
Comment投稿






