【待望】PerlユーザのためのPHP入門 (601レス)
【待望】PerlユーザのためのPHP入門 http://medaka.5ch.io/test/read.cgi/php/1046326634/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
37: nobodyさん [sage] 03/02/28 11:33 ID:??? >>28 print "${a}ゲット"; print $a."ゲット"; echo $a,"ゲット"; http://medaka.5ch.io/test/read.cgi/php/1046326634/37
38: nobodyさん [sage] 03/02/28 12:12 ID:??? Perlでは関数でなくサブルーチンと呼ばれていたな。 sub foo { print "$_[0] "; return $_[0]+100; } $b= &foo(100) print $b;; #100 200 ------------------- function foo($a) { print "$a "; return $a+100; } $b= foo(100); print $b; #100 200 PHPの場合は明示的に引数を記述しておく必要がある。 可変引数は配列を渡せば良いだろう。Perlも実際は@_という配列を渡しているわけだし。 まあ、こうやって見ると両方大した違いは無く見えるが 変数のスコープについて根本的な違いがあるので注意しよう。 それについては後述。 Perlでは関数でなくサブルーチンと呼ばれていたな。 sub foo { print "$_[0] "; http://medaka.5ch.io/test/read.cgi/php/1046326634/38
39: nobodyさん [sage] 03/02/28 12:41 ID:??? シフトJISでがんがん書いてます。 http://medaka.5ch.io/test/read.cgi/php/1046326634/39
40: 俺様 [] 03/02/28 20:06 ID:R6lXT7Vm >>36 _n ( l _、_ \ \ ( <_,` ) ヽ___ ̄ ̄ ) グッジョブ!! / / >>37 _、_ ( ,_ノ` ) n  ̄ \ ( E) グッジョブ!! フ /ヽ ヽ_// http://medaka.5ch.io/test/read.cgi/php/1046326634/40
41: 俺様 [] 03/02/28 20:12 ID:R6lXT7Vm 些細なことに見えるが、 自分はこのせいで某スクリプトを PerlからPHPに移植する際に、 30分ぐらい睨めっこした記憶があるので。 頭の中に入れて起きましょう。 $a=26; print "{$a}ゲット"; print $a."ゲット"; http://medaka.5ch.io/test/read.cgi/php/1046326634/41
42: nobodyさん [] 03/03/01 11:16 ID:5K/2+grl 先生質問です。 >>9の通りしましたがapacheが起動できません。 どうやらhttpd.confのLoadModule php4_module C:/php/sapi/php4apache.dllが原因のようです php4apache.dllをphp4apache2.dllとしても同じでした。 WinME Apache2.0.39です http://medaka.5ch.io/test/read.cgi/php/1046326634/42
43: nobodyさん [sage] 03/03/01 11:44 ID:??? >>42 OS側類。 http://medaka.5ch.io/test/read.cgi/php/1046326634/43
44: 俺様 [] 03/03/01 12:12 ID:UE12tRyA >>42 Apacheは2よりも1.3.27の方がいいと思う。 後はなんだろな〜 Meなんて怪しいOS使ったことないからな。 とりあえずApacheのバージョンを変えて試してみてクレイ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/44
45: nobodyさん [] 03/03/01 12:41 ID:5K/2+grl >>44 ありがとうございます。1.3.27を使ったら起動できました。 http://medaka.5ch.io/test/read.cgi/php/1046326634/45
46: nobodyさん [sage] 03/03/01 16:35 ID:??? | | ∧ |_|Д`) < それだー!! |文|⊂) | ̄|∧|  ̄ ̄ ̄ ̄ ̄ | | ∧ |_|Д`) < それだー!! |文|⊂) | ̄|∧|  ̄ ̄ ̄ ̄ ̄ | | ∧ |_|Д`) < それだー!! |文|⊂) | ̄|∧|  ̄ ̄ ̄ ̄ ̄ | | ∧ |_|Д`) < それだー!! |文|⊂) | ̄|∧|  ̄ ̄ ̄ ̄ ̄ | | ∧ |_|Д`) < それだー!! |文|⊂) | ̄|∧|  ̄ ̄ ̄ ̄ ̄ http://medaka.5ch.io/test/read.cgi/php/1046326634/46
47: nobodyさん [sage] 03/03/01 16:36 ID:??? >>44 OS = Windowsとか思っている痛い講師がいるクソスレはココですか。 http://medaka.5ch.io/test/read.cgi/php/1046326634/47
48: 俺様 [] 03/03/01 17:05 ID:UE12tRyA >>47 世の中は理詰めだけでは解決しない。 理論ヲタになるより、わかりやすさを求める方が現実的だ。 わかるかい? しかも、PHPと直接は関係ない。 君は文学者がテイラー展開を出来なかったら馬鹿にするだろうか? では、今日はいよいよ変数のスコープについての説明だ。 あくまでも対象者は基本的に『Perlしか』やったことがない人のみ。 C言語など他の言語をやっている人には馬鹿見たく思われる説明になるからだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/48
49: nobodyさん [sage] 03/03/01 17:07 ID:??? >>48 >君は文学者がテイラー展開を出来なかったら馬鹿にするだろうか? 少なくとも数学者を目指す文学者がマクローリン展開を知らなければバカにするが。 http://medaka.5ch.io/test/read.cgi/php/1046326634/49
50: 俺様 [] 03/03/01 17:30 ID:UE12tRyA >>49 俺様はべつにオペレーティングシステムのエキスパートを目指してはいないッポ。 #Perlscript sub foo{ $a = 100; print "$a,"; $a++; } &foo(); print $a; #100,101 まあ、当たり前の結果が表示されます。 これをPHPに書き換えてみましょう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/50
51: 俺様 [] 03/03/01 17:34 ID:UE12tRyA #PHPscript <?php function foo(){ $a = 100; print "$a,"; $a++; } foo(); print $a; ?> # 100, 何故か100しか表示されません!??( ̄□ ̄;)ナント!! どうして後ろの$aは表示されなかったのでしょうかという問題です。 http://medaka.5ch.io/test/read.cgi/php/1046326634/51
52: 俺様 [] 03/03/01 17:41 ID:UE12tRyA 同様の例です。 #Perl sub hoge{ print $a; } $a="俺様"; &hoge; ---------- #PHP function hoge(){ print $a; } $a="俺様"; hoge(); Perlの方だと見事、俺様と表示されるのですが、 後者の方は何も表示されないので吃驚仰天です。 http://medaka.5ch.io/test/read.cgi/php/1046326634/52
53: nobodyさん [sage] 03/03/01 17:47 ID:??? >>50 >俺様はべつにオペレーティングシステムのエキスパートを目指してはいないッポ。 いや、エンジニアでなくても車=ベンツとか思ってる奴はアホなわけで。 教養ではなく常識なのよ。常識。 http://medaka.5ch.io/test/read.cgi/php/1046326634/53
54: nobodyさん [sage] 03/03/01 18:26 ID:??? >>53 邪魔。キエロ http://medaka.5ch.io/test/read.cgi/php/1046326634/54
55: nobodyさん [sage] 03/03/01 18:33 ID:??? >>54 どうしていつものコテハンを使わないんですか? http://medaka.5ch.io/test/read.cgi/php/1046326634/55
56: nobodyさん [sage] 03/03/01 18:58 ID:??? >>55 ごめんごめん。かんじよめないんだ? ジャマ。キエロ http://medaka.5ch.io/test/read.cgi/php/1046326634/56
57: 俺様 [] 03/03/01 19:04 ID:UE12tRyA >>54,>>56 (・∀・)カエレ!! せっかくこのスレを良い感じにしたいのだから 煽りはよそでやってクレイ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/57
58: 俺様 [] 03/03/01 19:06 ID:UE12tRyA >>53 まあ、教養が無かった俺様が厨ってことで その話題は終わりにしよう。スレ違いだし。 http://medaka.5ch.io/test/read.cgi/php/1046326634/58
59: nobodyさん [] 03/03/01 19:09 ID:xu/mDseR ↓↓↓↓↓★ココだ★↓↓↓↓↓ http://www.pink-angel.jp/betu/linkvp/linkvp.html http://medaka.5ch.io/test/read.cgi/php/1046326634/59
60: nobodyさん [sage] 03/03/01 19:29 ID:??? >>50-51 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; と同じ #始めたばかりなので全く同じかどうかとか用語の使い方は正しくないかもしれません http://medaka.5ch.io/test/read.cgi/php/1046326634/60
61: nobodyさん [sage] 03/03/01 19:56 ID:??? #PHPscript <?php $a = 999; function foo(){ $a = 100; print "$a,"; $a++; } foo(); print $a; ?> #100,999 なーる。 http://medaka.5ch.io/test/read.cgi/php/1046326634/61
62: 俺様 [] 03/03/01 19:58 ID:gsC9ephA >>60 (*゚▽゚ノノ゙☆パチパチ Perlにおいていわゆるmyを付けた場合が PHPでは標準になっています。 C言語などの場合はコンパイル時に 未定義(未宣言)の変数だ!ってエラーを出してくれるのですが、 PHPではそのまま初期値(文字なら空白、数字なら0)として 認識してしまうので注意しましょう。 結構すんなり受け入れられるのかなー? 普段からmyを使ったりしている人なら問題ないだろうけど プログラミング言語をPerlしかやってないでグローバルなのが当たり前だって 思ってた人には受け入れるのに時間が掛かるかもしれない。 そんなことないか?どうだろう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/62
63: nobodyさん [] 03/03/01 20:01 ID:Ddm3hU+C Perlってなんて読むの? http://medaka.5ch.io/test/read.cgi/php/1046326634/63
64: 俺様 [] 03/03/01 20:08 ID:gsC9ephA 逆にPerlの標準のようにグローバル(大域)変数として 扱いたい場合も書いておきましょう。 これは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] http://medaka.5ch.io/test/read.cgi/php/1046326634/64
65: 俺様 [] 03/03/01 20:25 ID:UE12tRyA Perlには静的(スタティック)変数が無かったと思うので それについても書いておきましょう。 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の値をいじることは出来ません。 http://medaka.5ch.io/test/read.cgi/php/1046326634/65
66: 生徒B [sage] 03/03/01 20:39 ID:??? perlの use strict; のような未定義変数をチェックする方法はPHPに無いのでしょうか。 http://medaka.5ch.io/test/read.cgi/php/1046326634/66
67: nobodyさん [sage] 03/03/01 20:50 ID:??? { my $static = 0; sub foo () { return ++$static; } } http://medaka.5ch.io/test/read.cgi/php/1046326634/67
68: nobodyさん [] 03/03/01 21:03 ID:b+i+15ud だめだ・・・functionの時点でわからそ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/68
69: 俺様 [] 03/03/01 21:27 ID:UE12tRyA >>66 すまんが俺様は知らんな。 全ての定義済の変数を配列で返すような 関数ならあるが。 <?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 ) http://medaka.5ch.io/test/read.cgi/php/1046326634/69
70: nobodyさん [sage] 03/03/01 21:29 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/70
71: 俺様 [] 03/03/01 21:32 ID:UE12tRyA >>67 なるほど。Perlでstaticを実現した例ですね。 まあ、PHPの場合はわざわざ自前で作らなくても 最初からstaticという命令が用意されているということです。 http://medaka.5ch.io/test/read.cgi/php/1046326634/71
72: 俺様 [] 03/03/01 21:35 ID:UE12tRyA >>68 Perlをある程度理解していれば わかるようにしたいのだが、 (Perlも未経験という場合はちょっと厳しいです。) どこら辺がわからんだろうか? とりあえずPerlのsubをfunctionに置き換えちゃえばOKだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/72
73: nobodyさん [sage] 03/03/01 21:35 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/73
74: 生徒B [sage] 03/03/01 21:56 ID:??? >>69 どもども。 ちょっと面倒ですね。 http://medaka.5ch.io/test/read.cgi/php/1046326634/74
75: nobodyさん [sage] 03/03/01 22:00 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/75
76: nobodyさん [sage] 03/03/01 22:12 ID:??? >>66 error_reporting(E_ALL); でどうかな。 http://medaka.5ch.io/test/read.cgi/php/1046326634/76
77: nobodyさん [sage] 03/03/01 22:16 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/77
78: 生徒B [sage] 03/03/01 22:22 ID:??? <?php error_reporting(E_ALL); print $a; ?> #<b>Notice</b>: Undefined variable: a in <b> (filename) # </b> on line <b>3</b><br /> >>76 ありがとう。うまくいきました。 http://medaka.5ch.io/test/read.cgi/php/1046326634/78
79: nobodyさん [sage] 03/03/01 22:23 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/79
80: 俺様 [] 03/03/01 22:30 ID:UE12tRyA >>76 (・∀・)イイ! φ(.. )メモシテオコウ error_reporting(E_ALL); http://medaka.5ch.io/test/read.cgi/php/1046326634/80
81: nobodyさん [sage] 03/03/01 22:35 ID:??? あいだに空を入れる人生。色即是空(w http://medaka.5ch.io/test/read.cgi/php/1046326634/81
82: nobodyさん [sage] 03/03/02 00:05 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/82
83: 俺様 [] 03/03/02 19:03 ID:SRraTB8e よっしゃ!早くも寂れてきたぞ。今日は配列について書いておこう。 まず、Perlの場合配列値を表す変数は先頭が$でなく@になっていた。 しかしPHPではそんな面倒なことはない。どんな場合でも先頭は$でOKだ! 凄い楽そうだろ?(祝 初期化の差はこんな感じだ。 #Perl @a = (20,10,30,3); #PHP $a = array(20,10,30,3); arrayって余計な文字が付いたが細かいことは気にするな。 http://medaka.5ch.io/test/read.cgi/php/1046326634/83
84: 俺様 [] 03/03/02 19:10 ID:SRraTB8e 驚くことにPHPでは $a[] = "a"; $a[] = "b"; $a[] = "c"; $a[0] = "a"; $a[1] = "b"; $a[2] = "c"; この2つが同じ意味となるのだ。 角括弧内の数字を省略した場合、 値は配列に最後の要素として勝手に追加してくれる。 まあ、こういう独自仕様は混乱の元だから俺は上の形式で書いたことは無いがな。 わかった上で使うなら利用場面は結構多いかもしれない。 http://medaka.5ch.io/test/read.cgi/php/1046326634/84
85: nobodyさん [] 03/03/02 19:12 ID:L99j8QKU ↓↓↓↓↓★ピンクエンジェル★↓↓↓↓↓ http://www.pink-angel.jp/betu/linkvp/linkvp.html http://medaka.5ch.io/test/read.cgi/php/1046326634/85
86: 俺様 [] 03/03/02 19:19 ID:SRraTB8e 配列の関数一つ一つ説明するのは面倒だから あとは>>32のサイトや公式のマニュアルでも読んでくれ。 Perlで実現できてたことの代替手段は大体存在してる。 http://medaka.5ch.io/test/read.cgi/php/1046326634/86
87: 俺様 [] 03/03/02 19:26 ID: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]; http://medaka.5ch.io/test/read.cgi/php/1046326634/87
88: 俺様 [] 03/03/02 19:28 ID:FrxqKaYz まあ、おかしくなったらまずは変数を{}で括ってみろってことだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/88
89: nobodyさん [sage] 03/03/02 19:51 ID:??? @a{qw(a b c)} = @b[1..3]; こういうのはどう書く? http://medaka.5ch.io/test/read.cgi/php/1046326634/89
90: nobodyさん [sage] 03/03/02 20:32 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/90
91: 俺様 [] 03/03/02 21:07 ID:FrxqKaYz >>89 うーん、よくわからんな(汗 誰かわかる人募集中だ! まあ、とりあえず根性で全部書いておけ。 $a = array( "a" => $b[1], "b" => $b[2], "c" => $b[3], ) http://medaka.5ch.io/test/read.cgi/php/1046326634/91
92: nobodyさん [sage] 03/03/02 23:06 ID:??? なんで、空投稿するんだよ。見ずらいんだよ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/92
93: nobodyさん [sage] 03/03/02 23:16 ID:??? 日本語すら満足に書けない俺様が講師のクソスレはここですか? 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 見ずらいんだよ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/93
94: nobodyさん [ ] 03/03/02 23:20 ID:??? ねちっこいね。うざいというかきもい。 http://medaka.5ch.io/test/read.cgi/php/1046326634/94
95: nobodyさん [ ] 03/03/02 23:27 ID:??? ∧_∧ ( ´∀`)<きもい。きもい。 ( つ (_○___) http://medaka.5ch.io/test/read.cgi/php/1046326634/95
96: nobodyさん [sage] 03/03/02 23:31 ID:??? 見づらいんだよ。でした。すまん。 俺は「俺様」じゃないです。 http://medaka.5ch.io/test/read.cgi/php/1046326634/96
97: nobodyさん [sage] 03/03/03 04:20 ID:??? 普通に見てる人もいるんで、煽ってるやつらマジでどっかいって。 http://medaka.5ch.io/test/read.cgi/php/1046326634/97
98: nobodyさん [sage] 03/03/03 08:39 ID:??? >>97 普通にウザがってる人もいるんで自分のサイトでやるように説得してください。 http://medaka.5ch.io/test/read.cgi/php/1046326634/98
99: 俺様 [] 03/03/03 10:08 ID:gt/b6+qo 煽りでもレスが付かないよりは大歓迎だ! >>98 需要も少しはあるようだからまあ、多めに見てもいいじゃないか。 WebProg板ってスレ保持数に比べて活性化しているスレ数が非常に少ないから 他のスレがdat落ちして困るとかも無いしな。ウザかったら見なければ(・∀・)イイ! 2chブラウザ使ってこのスレごとあぼーんだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/99
100: 俺様 [] 03/03/03 10:33 ID:gt/b6+qo 今日はオブジェクト指向について書いておこう。 PHPもPerlもJavaやC++に代表されるオブジェクト指向言語である。 Perlのオブジェクト指向についてあまり知らないんですが、 Javaに比べるとPHPのオブジェクト指向に関する仕様は ショボイ!!!! 今年中に出る予定のPHP5で大幅に機能がアップするらしいので それに期待しましょう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/100
101: 俺様 [] 03/03/03 10:48 ID:gt/b6+qo まず、誰でも最初に疑問に思うのが オブジェクト指向を用いるメリットは何か? ということだ。 再利用ができる? そんなのオブジェクト指向じゃなくてもしてるじゃないか。 我々はprintという出力命令を何度も利用している。 printの命令が内部でどういう仕組みになっているか調べたことのある人は極少数だろう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/101
102: 俺様 [] 03/03/03 11:12 ID:gt/b6+qo まあ、オブジェクト指向をうまく使えば 再利用『しやすく』はなるだろう。 まず、カプセル化(データ隠蔽)というものがある。 人間というオブジェクトの例で考えてみよう。 人間は体重というデータを持っているが 我々は外見から見ただけでは体重を正確には知れない。 例えば、彼に『体重計に乗れ』ってメッセージを送れば 正確な体重を得ることが出来る。 同様に体重に『直接』アクセスして値を変えることは出来ない。 彼に『〜を食べろ』ってメッセージを送れば その食べた分だけ体重が増加してくれるのである。 つまり、内部で保持しているデータを隠蔽できて、 見たり変えたりするには間接的にアクセスする必要があるということなのだが、 PHPではアクセサ(アクセス制限)の概念が存在しないため このカプセル化があっさり崩壊してしまう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/102
103: 俺様 [] 03/03/03 11:35 ID:gt/b6+qo 再利用のためのもう一つの便利な機能は『継承』だろう。 既存のクラスのフィールド(データ)やメソッド(機能)を引き継いで、 その上で既存の機能を修正したり新たに追加したりできるようになる。 まあ、言い方を変えれば『継ぎはぎ』みたいなものだ。 PHPでは多重継承が存在しない。 つまり、あるクラスに対して1つの親クラスからしか フィールドやメソッドを引き継げないということだ。 同じく多重継承が禁じられているJavaではこのようなことがしたければ interfaceで代替が可能だが、 PHPではその代替案すら用意されていない。 多重継承なんかしなくてもプログラムは作れるという主張も根強いが、 まあ、それを言ったら継承なんかしなくてもプログラムを作れる と言っても同じようなことである。 http://medaka.5ch.io/test/read.cgi/php/1046326634/103
104: 俺様 [] 03/03/03 12:07 ID:gt/b6+qo 1つぐらいサンプルを書いてみよう。 因みに、このように変数に日本語使っても大丈夫だ。 (普段はお奨めしない。) <?php class 人{ //クラス名 var $体重; //フィールド function 人($値){ //コンストラクタ(初期化) $this->体重=$値; //値をフィールドへ代入 } function 体重計に乗る(){ return $this->体重;} //体重を出力するメソッド function 食べる($量){ $this->体重+=$量;} //体重を量だけ加える } $俺様=new 人(60); print $俺様->体重計に乗る(); print ","; $俺様->食べる(0.5); print $俺様->体重計に乗る(); #60,60.5 ?> http://medaka.5ch.io/test/read.cgi/php/1046326634/104
105: 俺様 [] 03/03/03 12:10 ID:gt/b6+qo クラス内で自分自身のフィールドにアクセスするのにも $this->体重 このように$thisとかいうものが必要なのだ。 (Javaの場合は省略可能) これは長いコードを書こうとするとわかるが面倒すぎ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/105
106: 俺様 [] 03/03/03 12:16 ID:gt/b6+qo ここで>>102で指摘した問題が起きる。 <?php class 人{ var $体重; function 人($値){ $this->体重=$値; } function 体重計に乗る(){ return $this->体重;} function 食べる($量){ $this->体重+=$量;} } $俺様=new 人(60); $俺様->体重 = 200; //おいおい、勝手に体重変えられたYO! print $俺様->体重; //体重計使わなくても調べられるのかYO! #200 俺は相撲取りじゃねえYO! ?> てなわけで体重計とかのメソッドを作る意味がなくなってしまうのだ。 (Javaの場合はフィールドの前にprivateを付けるなどすれば このような直接アクセスを防ぐことが出来る。) http://medaka.5ch.io/test/read.cgi/php/1046326634/106
107: 俺様 [] 03/03/03 12:26 ID:gt/b6+qo コンストラクタと言うのは結構便利なんだがな。 <?php class 人 { var $体重; function 人($値){ if($値<0) print "( ´,_ゝ`)プ"; else $this->体重=$値; } } $俺様=new 人(-20); #( ´,_ゝ`)プ ?> このように体重に負の値が入れられるのを 防ぐことが出来る。 まあ、>>106のようにされたら結局は意味が無いのだが・・・ http://medaka.5ch.io/test/read.cgi/php/1046326634/107
108: 俺様 [] 03/03/03 12:30 ID:gt/b6+qo というわけで長くなったが PHPのオブジェクト指向は 現在の仕様では大したことがないということで 積極的に使う必要は無いだろう。 機能をグループ化したい人とか、 『何となくかっこいいことしたい人とか』 (ただし、使い方を誤ると逆にかっこ悪くなる) にはしても損は無い程度だろうか。 いずれにしてもPHP5に期待。 http://medaka.5ch.io/test/read.cgi/php/1046326634/108
109: 俺様 [] 03/03/03 12:33 ID:gt/b6+qo 否定的なことばかり書いてたが 最近の本とか見るとメリットしか書いてなくて オブジェクト指向マンセーになる奴が多すぎる気がするから 敢えて逆行して書いただけで、 メリットをもっと強調するのなら実際は そこまでひどいわけでもないがな。 http://medaka.5ch.io/test/read.cgi/php/1046326634/109
110: nobodyさん [sage] 03/03/03 23:34 ID:??? 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ブラウザ使ってこのスレごとあぼーんだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/110
111: nobodyさん [sage] 03/03/03 23:34 ID:??? 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ブラウザ使ってこのスレごとあぼーんだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/111
112: nobodyさん [sage] 03/03/03 23:34 ID:??? 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ブラウザ使ってこのスレごとあぼーんだ。 http://medaka.5ch.io/test/read.cgi/php/1046326634/112
113: nobodyさん [sage] 03/03/04 02:34 ID:??? あんまり資源無駄に使ってるとアク禁食らっちゃうよー http://medaka.5ch.io/test/read.cgi/php/1046326634/113
114: nobodyさん [sage] 03/03/04 05:05 ID:??? このスレすごく良いです。頑張ってください。 http://medaka.5ch.io/test/read.cgi/php/1046326634/114
115: nobodyさん [] 03/03/04 07:56 ID:6TNNfPas >>113 同意。>>1は反省しる。 >>114 自作自演晒しage http://medaka.5ch.io/test/read.cgi/php/1046326634/115
116: 俺様 [] 03/03/04 10:17 ID:SJwb4sM+ オブジェクト指向に関するレスは0か。 まあ、使わなければならない機能でもないから放って置いてくれ。 今日はそろそろ具体的なHTMLドキュメントの作成方法に入っていこう。 >>113 気をつけます。 >>114 (TдT) アリガトウ >>115 俺様は朝5時になんか起きれん。 http://medaka.5ch.io/test/read.cgi/php/1046326634/116
117: 俺様 [] 03/03/04 10:29 ID: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ドキュメントと出力される。 http://medaka.5ch.io/test/read.cgi/php/1046326634/117
118: 俺様 [] 03/03/04 10:50 ID: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 http://medaka.5ch.io/test/read.cgi/php/1046326634/118
119: 俺様 [] 03/03/04 11:00 ID:SJwb4sM+ 因みに、PHPはHTML内に埋め込むことができると言うのを 利点として主張されることも多い。これは以下のように書けるからである。 <?php $title = "タイトル"; ?> <html> <head> <title><?php $title ?></title> </head> <body> 俺様のHTMLドキュメント </body> </html> このように必要な部分だけをPHPスクリプトとして認識させることが出来る。 コメントについても書いちゃおう。 Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。 // コメント。#と意味は同じ。 /* これもコメント。複数行をコメントか出来るのが特徴。 つまりここもコメントになる。 */ http://medaka.5ch.io/test/read.cgi/php/1046326634/119
120: 俺様 [] 03/03/04 11:11 ID:hLFJ4wUF この利点を利用すれば 簡単なカウンタなら カウント保存用の空ファイルさえアップしておけば ほんの数行であっという間に出来てしまうのだ。 明日はファイル入出力をやろう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/120
121: nobodyさん [sage] 03/03/04 12:54 ID:??? >>116 オブジェクト指向、興味あるよ? http://medaka.5ch.io/test/read.cgi/php/1046326634/121
122: nobodyさん [] 03/03/04 18:41 ID:Nso2bqOx 手っ取りばやくお金もうけしましょう http://www.h4.dion.ne.jp/~sohotop/ 日給2万円も無理じゃない!!! http://medaka.5ch.io/test/read.cgi/php/1046326634/122
123: nobodyさん [sage] 03/03/04 18:50 ID:??? >122 ねずみ講じゃないの? http://medaka.5ch.io/test/read.cgi/php/1046326634/123
124: nobodyさん [] 03/03/04 18:55 ID:QqzA7g89 http://www.agemasukudasai.com/bloom/ http://medaka.5ch.io/test/read.cgi/php/1046326634/124
125: nobodyさん [sage] 03/03/04 19:35 ID:??? 香ばしいです、はい。 http://medaka.5ch.io/test/read.cgi/php/1046326634/125
126: nobodyさん [sage] 03/03/04 21:46 ID:??? OOの無いPHPを使う位なら俺はPerlを使う。 http://medaka.5ch.io/test/read.cgi/php/1046326634/126
127: 生徒B [sage] 03/03/05 01:20 ID:??? >>126 入門なんだから、大目に見てくださいな。 http://medaka.5ch.io/test/read.cgi/php/1046326634/127
128: 俺様 [] 03/03/05 10:25 ID:RSVIcXg3 >>126 まあ、まずはOOを使うメリットをよく考えないと。 モジュールでも作るのか? >>127 OOの入門レベルなら プログラミング全体で見てもやはり入門であることには違いない。 http://medaka.5ch.io/test/read.cgi/php/1046326634/128
129: nobodyさん [sage] 03/03/05 10:41 ID:??? http://medaka.5ch.io/test/read.cgi/php/1046326634/129
130: 俺様 [] 03/03/05 10:50 ID: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 http://medaka.5ch.io/test/read.cgi/php/1046326634/130
131: nobodyさん [sage] 03/03/05 10:52 ID:??? >>130 なぁ、お前学校行ってないの? http://medaka.5ch.io/test/read.cgi/php/1046326634/131
132: 俺様 [] 03/03/05 11:07 ID: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> http://medaka.5ch.io/test/read.cgi/php/1046326634/132
133: 俺様 [] 03/03/05 11:16 ID:RSVIcXg3 >>131 オマエモナー http://medaka.5ch.io/test/read.cgi/php/1046326634/133
134: 俺様 [] 03/03/05 11:25 ID:RSVIcXg3 では明日はいよいよフォームの処理を行おう。 http://medaka.5ch.io/test/read.cgi/php/1046326634/134
135: 俺様 [] 03/03/05 11:27 ID:RSVIcXg3 ちなみにレッツPHPにファイルを1回しか開かなくていいバージョンが書かれているな。 http://php.s3.to/counter/ 同時アクセスの際の弊害が置きにくくなるからそっちの方がいいだろう。 flockもしておくこと。 http://medaka.5ch.io/test/read.cgi/php/1046326634/135
136: 俺様 [] 03/03/05 11:56 ID:5JBlRiko 因みに、PHPはHTML内に埋め込むことができると言うのを 利点として主張されることも多い。これは以下のように書けるからである。 <?php $title = "タイトル"; ?> <html> <head> <title><?php $title ?></title> </head> <body> 俺様のHTMLドキュメント </body> </html> このように必要な部分だけをPHPスクリプトとして認識させることが出来る。 コメントについても書いちゃおう。 Perlでは#のみだったがPHPではJavaなどで使われている以下の形式も可能である。 // コメント。#と意味は同じ。 /* これもコメント。複数行をコメントか出来るのが特徴。 つまりここもコメントになる。 */ http://medaka.5ch.io/test/read.cgi/php/1046326634/136
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 465 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.678s*