【待望】PerlユーザのためのPHP入門
■ このスレッドは過去ログ倉庫に格納されています
0001俺様
03/02/27 15:17ID:tJsRCtRD両者の違いを中心に講義してやる。
今までPerlマンセーだったやつはこれを機にPHPに変更しよう也。
質問もガンガン書いてくれ。
このPerlの文はPHPだとどう書くの?とか。
0039nobodyさん
03/02/28 12:41ID:???0040俺様
03/02/28 20:06ID:R6lXT7Vm_n
( l _、_
\ \ ( <_,` )
ヽ___ ̄ ̄ ) グッジョブ!!
/ /
>>37
_、_
( ,_ノ` ) n
 ̄ \ ( E) グッジョブ!!
フ /ヽ ヽ_//
0041俺様
03/02/28 20:12ID:R6lXT7Vm自分はこのせいで某スクリプトを
PerlからPHPに移植する際に、
30分ぐらい睨めっこした記憶があるので。
頭の中に入れて起きましょう。
$a=26;
print "{$a}ゲット";
print $a."ゲット";
0042nobodyさん
03/03/01 11:16ID:5K/2+grl>>9の通りしましたがapacheが起動できません。
どうやらhttpd.confのLoadModule php4_module C:/php/sapi/php4apache.dllが原因のようです
php4apache.dllをphp4apache2.dllとしても同じでした。
WinME Apache2.0.39です
0044俺様
03/03/01 12:12ID:UE12tRyAApacheは2よりも1.3.27の方がいいと思う。
後はなんだろな〜
Meなんて怪しいOS使ったことないからな。
とりあえずApacheのバージョンを変えて試してみてクレイ。
0045nobodyさん
03/03/01 12:41ID:5K/2+grlありがとうございます。1.3.27を使ったら起動できました。
0046nobodyさん
03/03/01 16:35ID:???|_|Д`) < それだー!!
|文|⊂)
| ̄|∧|
 ̄ ̄ ̄ ̄ ̄
| | ∧
|_|Д`) < それだー!!
|文|⊂)
| ̄|∧|
 ̄ ̄ ̄ ̄ ̄
| | ∧
|_|Д`) < それだー!!
|文|⊂)
| ̄|∧|
 ̄ ̄ ̄ ̄ ̄
| | ∧
|_|Д`) < それだー!!
|文|⊂)
| ̄|∧|
 ̄ ̄ ̄ ̄ ̄
| | ∧
|_|Д`) < それだー!!
|文|⊂)
| ̄|∧|
 ̄ ̄ ̄ ̄ ̄
0048俺様
03/03/01 17:05ID:UE12tRyA世の中は理詰めだけでは解決しない。
理論ヲタになるより、わかりやすさを求める方が現実的だ。
わかるかい?
しかも、PHPと直接は関係ない。
君は文学者がテイラー展開を出来なかったら馬鹿にするだろうか?
では、今日はいよいよ変数のスコープについての説明だ。
あくまでも対象者は基本的に『Perlしか』やったことがない人のみ。
C言語など他の言語をやっている人には馬鹿見たく思われる説明になるからだ。
0049nobodyさん
03/03/01 17:07ID:???>君は文学者がテイラー展開を出来なかったら馬鹿にするだろうか?
少なくとも数学者を目指す文学者がマクローリン展開を知らなければバカにするが。
0050俺様
03/03/01 17:30ID:UE12tRyA俺様はべつにオペレーティングシステムのエキスパートを目指してはいないッポ。
#Perlscript
sub foo{
$a = 100;
print "$a,";
$a++;
}
&foo();
print $a;
#100,101
まあ、当たり前の結果が表示されます。
これをPHPに書き換えてみましょう。
0051俺様
03/03/01 17:34ID:UE12tRyA<?php
function foo(){
$a = 100;
print "$a,";
$a++;
}
foo();
print $a;
?>
# 100,
何故か100しか表示されません!?( ̄□ ̄;)ナント!!
どうして後ろの$aは表示されなかったのでしょうかという問題です。
0052俺様
03/03/01 17:41ID:UE12tRyA#Perl
sub hoge{
print $a;
}
$a="俺様";
&hoge;
----------
#PHP
function hoge(){
print $a;
}
$a="俺様";
hoge();
Perlの方だと見事、俺様と表示されるのですが、
後者の方は何も表示されないので吃驚仰天です。
0053nobodyさん
03/03/01 17:47ID:???>俺様はべつにオペレーティングシステムのエキスパートを目指してはいないッポ。
いや、エンジニアでなくても車=ベンツとか思ってる奴はアホなわけで。
教養ではなく常識なのよ。常識。
0058俺様
03/03/01 19:06ID:UE12tRyAまあ、教養が無かった俺様が厨ってことで
その話題は終わりにしよう。スレ違いだし。
0059nobodyさん
03/03/01 19:09ID:xu/mDseRhttp://www.pink-angel.jp/betu/linkvp/linkvp.html
0060nobodyさん
03/03/01 19:29ID:???Perlがデフォルトでグローバル変数なのに対して、
PHPでは、デフォルトでローカル変数だから。
#PHPscript
<?php
function foo(){
$a = 100;
print "$a,";
$a++;
}
foo();
print $a;
?>
は
#Perlscript
sub foo{
my $a = 100;
print "$a,";
$a++;
}
&foo;
print $a;
と同じ
#始めたばかりなので全く同じかどうかとか用語の使い方は正しくないかもしれません
0061nobodyさん
03/03/01 19:56ID:???<?php
$a = 999;
function foo(){
$a = 100;
print "$a,";
$a++;
}
foo();
print $a;
?>
#100,999
なーる。
0062俺様
03/03/01 19:58ID:gsC9ephA(*゚▽゚ノノ゙☆パチパチ
Perlにおいていわゆるmyを付けた場合が
PHPでは標準になっています。
C言語などの場合はコンパイル時に
未定義(未宣言)の変数だ!ってエラーを出してくれるのですが、
PHPではそのまま初期値(文字なら空白、数字なら0)として
認識してしまうので注意しましょう。
結構すんなり受け入れられるのかなー?
普段からmyを使ったりしている人なら問題ないだろうけど
プログラミング言語をPerlしかやってないでグローバルなのが当たり前だって
思ってた人には受け入れるのに時間が掛かるかもしれない。
そんなことないか?どうだろう。
0063nobodyさん
03/03/01 20:01ID:Ddm3hU+C0064俺様
03/03/01 20:08ID:gsC9ephA扱いたい場合も書いておきましょう。
これはCやJavaとも違う仕様ですね。
関数内の最初でglobalと宣言します。
なお、PHPの設定でregister_globalsをonにすると
また違うようなのですが、デフォルトはoffで推奨となっているのでそれに従います。
<?php
$a = 999;
function foo(){
global $a; //これでグローバルスコープの$aを参照しますよと宣言している。
print "$a,";
$a++;
}
foo();
print $a;
?>
#999,1000
因みに、function foo()はどこに書いてもOKです。
(PHP3だったころは駄目だったとか・・・)
>>63
[p:(r)l]
0065俺様
03/03/01 20:25ID:UE12tRyAそれについても書いておきましょう。
function foo(){
static $a=0;
print $a;
$a++;
}
for($i=0;$i<5;$i++){
foo();
}
#01234
このようにすると
最初にfoo()が呼ばれたときのみstatic $a=0が呼ばれてくれるのです。
以降、foo()が呼ばれるたびに$aは1ずつ増加してくれます。
staticをつけないと毎回0が出力されてしまいますね。
変数のスコープは関数内のみなのに値を保持していてくれるわけです。
globalでは無いので関数外部から直接$aの値をいじることは出来ません。
0066生徒B
03/03/01 20:39ID:???0067nobodyさん
03/03/01 20:50ID:???my $static = 0;
sub foo () {
return ++$static;
}
}
0068nobodyさん
03/03/01 21:03ID:b+i+15ud0069俺様
03/03/01 21:27ID:UE12tRyAすまんが俺様は知らんな。
全ての定義済の変数を配列で返すような
関数ならあるが。
<?php
$def_arr= get_defined_vars();
//初期設定(_SERVER["SERVER_ADDR"]のようなもの)
//を含む全ての定義済みの変数の配列を得る)
$a=3;
$abc=10;
$arr = get_defined_vars();
//初期設定のものに上の2つが追加された。
$new_arr = array_diff($arr,$def_arr);
//2つの配列の差を得る。
print_r($new_arr);//配列の内容を出力
?>
#Array ( [a] => 3 [abc] => 10 )
0070nobodyさん
03/03/01 21:29ID:???0071俺様
03/03/01 21:32ID:UE12tRyAなるほど。Perlでstaticを実現した例ですね。
まあ、PHPの場合はわざわざ自前で作らなくても
最初からstaticという命令が用意されているということです。
0072俺様
03/03/01 21:35ID:UE12tRyAPerlをある程度理解していれば
わかるようにしたいのだが、
(Perlも未経験という場合はちょっと厳しいです。)
どこら辺がわからんだろうか?
とりあえずPerlのsubをfunctionに置き換えちゃえばOKだ。
0073nobodyさん
03/03/01 21:35ID:???0075nobodyさん
03/03/01 22:00ID:???0077nobodyさん
03/03/01 22:16ID:???0078生徒B
03/03/01 22:22ID:???error_reporting(E_ALL);
print $a;
?>
#<b>Notice</b>: Undefined variable: a in <b> (filename)
# </b> on line <b>3</b><br />
>>76
ありがとう。うまくいきました。
0079nobodyさん
03/03/01 22:23ID:???0080俺様
03/03/01 22:30ID:UE12tRyA(・∀・)イイ!
φ(.. )メモシテオコウ
error_reporting(E_ALL);
0081nobodyさん
03/03/01 22:35ID:???0082nobodyさん
03/03/02 00:05ID:???0083俺様
03/03/02 19:03ID:SRraTB8eまず、Perlの場合配列値を表す変数は先頭が$でなく@になっていた。
しかしPHPではそんな面倒なことはない。どんな場合でも先頭は$でOKだ!
凄い楽そうだろ?(祝
初期化の差はこんな感じだ。
#Perl
@a = (20,10,30,3);
#PHP
$a = array(20,10,30,3);
arrayって余計な文字が付いたが細かいことは気にするな。
0084俺様
03/03/02 19:10ID:SRraTB8e$a[] = "a";
$a[] = "b";
$a[] = "c";
$a[0] = "a";
$a[1] = "b";
$a[2] = "c";
この2つが同じ意味となるのだ。
角括弧内の数字を省略した場合、
値は配列に最後の要素として勝手に追加してくれる。
まあ、こういう独自仕様は混乱の元だから俺は上の形式で書いたことは無いがな。
わかった上で使うなら利用場面は結構多いかもしれない。
0085nobodyさん
03/03/02 19:12ID:L99j8QKUhttp://www.pink-angel.jp/betu/linkvp/linkvp.html
0086俺様
03/03/02 19:19ID:SRraTB8eあとは>>32のサイトや公式のマニュアルでも読んでくれ。
Perlで実現できてたことの代替手段は大体存在してる。
0087俺様
03/03/02 19:26ID:FrxqKaYzこれは前も似たようなこと言ったが
$a[0][1] = 41;
print "$a[0][1]";
Perlだと期待する結果41が出力されるが、
PHPだとArray[1]という怪しげな結果が出力されてしまう。
後ろの[1]はただの文字列として認識されてしまっているようなのだ。
以下のどちらかにしないといけない。
$a[0][1] = 41;
print "{$a[0][1]}";
print "".$a[0][1];
0088俺様
03/03/02 19:28ID:FrxqKaYz0089nobodyさん
03/03/02 19:51ID:???こういうのはどう書く?
0090nobodyさん
03/03/02 20:32ID:???0091俺様
03/03/02 21:07ID:FrxqKaYzうーん、よくわからんな(汗
誰かわかる人募集中だ!
まあ、とりあえず根性で全部書いておけ。
$a = array(
"a" => $b[1],
"b" => $b[2],
"c" => $b[3],
)
0092nobodyさん
03/03/02 23:06ID:???0093nobodyさん
03/03/02 23:16ID:???見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
見ずらいんだよ。
0094nobodyさん
03/03/02 23:20ID:???0095nobodyさん
03/03/02 23:27ID:???( ´∀`)<きもい。きもい。
( つ
(_○___)
0096nobodyさん
03/03/02 23:31ID:???俺は「俺様」じゃないです。
0097nobodyさん
03/03/03 04:20ID:???0099俺様
03/03/03 10:08ID:gt/b6+qo>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
0100俺様
03/03/03 10:33ID:gt/b6+qoPHPもPerlもJavaやC++に代表されるオブジェクト指向言語である。
Perlのオブジェクト指向についてあまり知らないんですが、
Javaに比べるとPHPのオブジェクト指向に関する仕様は
ショボイ!!!!
今年中に出る予定のPHP5で大幅に機能がアップするらしいので
それに期待しましょう。
0101俺様
03/03/03 10:48ID:gt/b6+qoオブジェクト指向を用いるメリットは何か?
ということだ。
再利用ができる?
そんなのオブジェクト指向じゃなくてもしてるじゃないか。
我々はprintという出力命令を何度も利用している。
printの命令が内部でどういう仕組みになっているか調べたことのある人は極少数だろう。
0102俺様
03/03/03 11:12ID:gt/b6+qo再利用『しやすく』はなるだろう。
まず、カプセル化(データ隠蔽)というものがある。
人間というオブジェクトの例で考えてみよう。
人間は体重というデータを持っているが
我々は外見から見ただけでは体重を正確には知れない。
例えば、彼に『体重計に乗れ』ってメッセージを送れば
正確な体重を得ることが出来る。
同様に体重に『直接』アクセスして値を変えることは出来ない。
彼に『〜を食べろ』ってメッセージを送れば
その食べた分だけ体重が増加してくれるのである。
つまり、内部で保持しているデータを隠蔽できて、
見たり変えたりするには間接的にアクセスする必要があるということなのだが、
PHPではアクセサ(アクセス制限)の概念が存在しないため
このカプセル化があっさり崩壊してしまう。
0103俺様
03/03/03 11:35ID:gt/b6+qo既存のクラスのフィールド(データ)やメソッド(機能)を引き継いで、
その上で既存の機能を修正したり新たに追加したりできるようになる。
まあ、言い方を変えれば『継ぎはぎ』みたいなものだ。
PHPでは多重継承が存在しない。
つまり、あるクラスに対して1つの親クラスからしか
フィールドやメソッドを引き継げないということだ。
同じく多重継承が禁じられているJavaではこのようなことがしたければ
interfaceで代替が可能だが、
PHPではその代替案すら用意されていない。
多重継承なんかしなくてもプログラムは作れるという主張も根強いが、
まあ、それを言ったら継承なんかしなくてもプログラムを作れる
と言っても同じようなことである。
0104俺様
03/03/03 12:07ID:gt/b6+qo因みに、このように変数に日本語使っても大丈夫だ。
(普段はお奨めしない。)
<?php
class 人{ //クラス名
var $体重; //フィールド
function 人($値){ //コンストラクタ(初期化)
$this->体重=$値; //値をフィールドへ代入
}
function 体重計に乗る(){ return $this->体重;} //体重を出力するメソッド
function 食べる($量){ $this->体重+=$量;} //体重を量だけ加える
}
$俺様=new 人(60);
print $俺様->体重計に乗る();
print ",";
$俺様->食べる(0.5);
print $俺様->体重計に乗る();
#60,60.5
?>
0105俺様
03/03/03 12:10ID:gt/b6+qo$this->体重
このように$thisとかいうものが必要なのだ。
(Javaの場合は省略可能)
これは長いコードを書こうとするとわかるが面倒すぎ。
0106俺様
03/03/03 12:16ID:gt/b6+qo<?php
class 人{
var $体重;
function 人($値){
$this->体重=$値;
}
function 体重計に乗る(){ return $this->体重;}
function 食べる($量){ $this->体重+=$量;}
}
$俺様=new 人(60);
$俺様->体重 = 200; //おいおい、勝手に体重変えられたYO!
print $俺様->体重; //体重計使わなくても調べられるのかYO!
#200 俺は相撲取りじゃねえYO!
?>
てなわけで体重計とかのメソッドを作る意味がなくなってしまうのだ。
(Javaの場合はフィールドの前にprivateを付けるなどすれば
このような直接アクセスを防ぐことが出来る。)
0107俺様
03/03/03 12:26ID:gt/b6+qo<?php
class 人
{
var $体重;
function 人($値){
if($値<0) print "( ´,_ゝ`)プ";
else $this->体重=$値;
}
}
$俺様=new 人(-20);
#( ´,_ゝ`)プ
?>
このように体重に負の値が入れられるのを
防ぐことが出来る。
まあ、>>106のようにされたら結局は意味が無いのだが・・・
0108俺様
03/03/03 12:30ID:gt/b6+qoPHPのオブジェクト指向は
現在の仕様では大したことがないということで
積極的に使う必要は無いだろう。
機能をグループ化したい人とか、
『何となくかっこいいことしたい人とか』
(ただし、使い方を誤ると逆にかっこ悪くなる)
にはしても損は無い程度だろうか。
いずれにしてもPHP5に期待。
0109俺様
03/03/03 12:33ID:gt/b6+qo最近の本とか見るとメリットしか書いてなくて
オブジェクト指向マンセーになる奴が多すぎる気がするから
敢えて逆行して書いただけで、
メリットをもっと強調するのなら実際は
そこまでひどいわけでもないがな。
0110nobodyさん
03/03/03 23:34ID:???98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
0111nobodyさん
03/03/03 23:34ID:???98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
0112nobodyさん
03/03/03 23:34ID:???98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
98 名前:nobodyさん 投稿日:2003/03/03(月) 08:39 ID:???
>>97
普通にウザがってる人もいるんで自分のサイトでやるように説得してください。
99 名前:俺様 投稿日:2003/03/03(月) 10:08 ID:gt/b6+qo
煽りでもレスが付かないよりは大歓迎だ!
>>98
需要も少しはあるようだからまあ、多めに見てもいいじゃないか。
WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから
他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ!
2chブラウザ使ってこのスレごとあぼーんだ。
0113nobodyさん
03/03/04 02:34ID:???0114nobodyさん
03/03/04 05:05ID:???0116俺様
03/03/04 10:17ID:SJwb4sM+まあ、使わなければならない機能でもないから放って置いてくれ。
今日はそろそろ具体的なHTMLドキュメントの作成方法に入っていこう。
>>113
気をつけます。
>>114
(TдT) アリガトウ
>>115
俺様は朝5時になんか起きれん。
0117俺様
03/03/04 10:29ID:SJwb4sM+自分が使いやすい方法を用いればよいだろう。
<?php
$title = "タイトル";
print "<html>";
print "<head>";
print "<title>$title</title>";
print "</head>";
print "<body>";
print "俺様のHTMLドキュメント";
print "</body>";
print "</html>";
?>
前も言ったように、CGI/Perlの場合は
print "Content-type: text/html\n\n";
こんなのが必要だったがmod_phpの場合は要らない。
上のスクリプトを書いてブラウザで開いてみれば
見事、俺様のHTMLドキュメントと出力される。
0118俺様
03/03/04 10:50ID:SJwb4sM+混合させてまとめて記述しちゃうか。
<?php
$title = "タイトル";
echo "<html>"; //echoも出力命令の1つ。printと同じようなものと思って良い。
echo("<head>"); //今まで省略してたけど()を付けても構わない。printも同様。
//C言語にあったprintfも使える。%3dなど書式をいろいろ設定できる。
//printやechoと違い、()が必須なので注意。
printf("<title>%s</title>",$title);
printf("</head>");
print <<<EOD //ヒアドキュメント。HTML部分が長くてprintとか書くのが面倒なとき便利
<body>
俺様のHTMLドキュメント
</body>
EOD; //ヒアドキュメント終了
print "</html>";
?>
ヒアドキュメントはPerlでも使っていた人は多いでしょう・
Perlでは↓のように書くが、PHPではセミコロンの位置が変わっているので
間違えないように注意しよう(重要)。
print <<EOD;
...
EOD
0119俺様
03/03/04 11:00ID:SJwb4sM+利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。
コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。 */
0120俺様
03/03/04 11:11ID:hLFJ4wUF簡単なカウンタなら
カウント保存用の空ファイルさえアップしておけば
ほんの数行であっという間に出来てしまうのだ。
明日はファイル入出力をやろう。
0122nobodyさん
03/03/04 18:41ID:Nso2bqOxhttp://www.h4.dion.ne.jp/~sohotop/
日給2万円も無理じゃない!!!
0123nobodyさん
03/03/04 18:50ID:???ねずみ講じゃないの?
0124nobodyさん
03/03/04 18:55ID:QqzA7g890125nobodyさん
03/03/04 19:35ID:???0126nobodyさん
03/03/04 21:46ID:???OOの無いPHPを使う位なら俺はPerlを使う。
0128俺様
03/03/05 10:25ID:RSVIcXg3まあ、まずはOOを使うメリットをよく考えないと。
モジュールでも作るのか?
>>127
OOの入門レベルなら
プログラミング全体で見てもやはり入門であることには違いない。
0129nobodyさん
03/03/05 10:41ID:???0130俺様
03/03/05 10:50ID:RSVIcXg3ファイルの開き方は、PerlではopenだったがPHPではfopenになる。
読み取りや書き込みなどのモードもPerlとは仕様が変わり
C,Java寄りになっているので注意しよう。
PHP:
$fp = fopen(filename, mode); //ファイルポインタの位置が返る
Perl:
open(FILE, filename); //返り値は正常時が1、失敗だと0
オープンモードの選択方法がPerlだと+>みたいのをファイル名に直接つけていたのが
PHPだと2つ目の引数として別に記述するようになった。
ファイルハンドラは引数に記述するのではなく、
返り値になったのでそこも注意しよう。
具体的な仕様はマニュアルを参照。
http://www.php.net/manual/ja/function.fopen.php
0132俺様
03/03/05 11:07ID:RSVIcXg3仕様としてはファイルcount.txtの1行目にカウンタ数値を書くだけのものだ。
まず予めcount.txtを作成して0を記述しておくこと。
<?php
$fp = fopen("count.txt","r");
//count.txtを読み出しモードで開く。
//$fpはファイルポインタであり、rの場合ファイルの先頭の位置が返される。
$count = fgets($fp); //改行かファイルの終端まで読みこんで$countへ代入。
fclose($fp); //いったん閉じる
$count++;
$fp = fopen("count.txt","w"); //書き込みモード
fwrite($fp,$count); //書き込み。
fclose($fp);
?>
<html>
<body>
貴方は<?php print $count; ?>人目の俺様の弟子じゃ。
</body>
</html>
0133俺様
03/03/05 11:16ID:RSVIcXg3オマエモナー
0134俺様
03/03/05 11:25ID:RSVIcXg30135俺様
03/03/05 11:27ID:RSVIcXg3http://php.s3.to/counter/
同時アクセスの際の弊害が置きにくくなるからそっちの方がいいだろう。
flockもしておくこと。
0136俺様
03/03/05 11:56ID:5JBlRiko利点として主張されることも多い。これは以下のように書けるからである。
<?php $title = "タイトル"; ?>
<html>
<head>
<title><?php $title ?></title>
</head>
<body>
俺様のHTMLドキュメント
</body>
</html>
このように必要な部分だけをPHPスクリプトとして認識させることが出来る。
コメントについても書いちゃおう。
Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。
// コメント。#と意味は同じ。
/* これもコメント。複数行をコメントか出来るのが特徴。
つまりここもコメントになる。 */
0137nobodyさん
03/03/05 13:34ID:E53JqQ+I下のようなのが沢山あるのでなるべくif文は使いたくないんです。
例1:(Perl)
printf "<a href=\"%s\" target=\"%s\">%s</a>\n",&link($a?$b:$c),$d?"_blank":"_top",$d?"新しいウィンドウで開く":($e?"次のページ":"更新");
0138nobodyさん
03/03/05 13:39ID:???(式1) ? (式2) : (式3);
この式は、式1 がTRUEの場合に 式2 を、 式1 がFALSEの場合に 式3 を値とします。
と、PHPマニュアルからまんま転載してみる。
■ このスレッドは過去ログ倉庫に格納されています