ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

現在PHPを勉強中の初心者です。
今勉強しているのはPHP5の入門書なのですが、もうすぐ終わるのでサンプル集の本を見つけて始めようと思っています。
が。
実際に自分のマシン(XP SP2 Pro)にインストールしているのはPHP4.3.2なのです。(マニュアル通りにPHP5をインストールしたら動かないので)

そして、見つけたサンプル集はPHP5なのですが検索してみるとPHP4のもありました。

このPHP4と5では、どのような違いがあるのでしょうか?その差は大きいのでしょうか?
そして、学ぶとしたらどちらが実用的なのでしょうか???

このQ&Aに関連する最新のQ&A

A 回答 (5件)

phpは結構マニュアルがネット上にありますし、マニュアルと言っていいの分かりませんが^^;


php4 サンプル とか分からない関数で検索すると結構例が出てきます

あと書店でですが、php+mySQLの本ならまだPHP4の場合が多いですよ^^

あとはPHP5も4もさほど変わらないものもあるので、ネット上で色々違いを調べながらやるかな
いくつか利用してるとこ貼り付けておきますね!がんばりましょう^^
http://plog.pya.jp/program/php/index.html
http://www.sound-uz.jp/php/
http://php.s3.to/
http://jp.php.net/manual/ja/index.php
    • good
    • 0
この回答へのお礼

度々ありがとうございます!
URLチェックさせていただきます(^^)。

PHP4もまだまだ現役…ということですね。

まだ4も5も区別の付けられるレベルではないので、まずはいろいろ調べてみたいと思います。

ありがとうございました。

お礼日時:2005/07/20 09:36

PHP5の方がデストラクタが使えるようになったとか、


オブジェクトの代入がコピーから、参照渡しになったとかで色々違います。

(ここに出ています)
http://phpspot.net/php/php5_topics.html

今の時分では、その違いを意識できるところにいないでしょうから、どちらででも良いと思いますよ。

オブジェクティブにコーディングするなら違いがかなり大きいですが、サンプルいじっている時分なら、どちらも差がないのではないかと。

どんなプログラミング言語もそうですが、新しくなるばかりです、古いので無ければ使えないなんてのでは置いて行かれます。
php5 なんて古くなる日も来るんですよ、これが。
そんなことを考えたら、php4 だとか、php5 だとかに拘らず、使えるようにようになることがいいと思いますよ。

さらに言うなら他のプログミング言語でも。
    • good
    • 1
この回答へのお礼

レスありがとうございます。

確かに、今新しくても将来はそれが普通で、さらには古いものになる。世の中どんどん進歩していくのですよね。

私のようなレベルではPHP4と5、それほど差がないのであればどちらでも同じ。さらには知識が増えればもうけもん!ですかね(^^ゞ

とにかくPHPをマスター(とまでいかないかもしれませんが)した暁には他の言語も学んでいきたいと思っています。

ありがとうございました。

お礼日時:2005/07/20 09:47

そんなに違いますか?


ボクは、特にPHP4,5気にしてない。
書籍も、PHP4が3冊と辞書が1冊。
PHP5が2冊、サンプル集は4に対応したものが多いかな。
あと図書館で適当に借りたのはどっちかすら気にしてません。
使ってるスペースもローカルも4だと思います。

オブジェクト指向が強化されたとは調べた気もしますが、PHPは半年くらいしか触ってないので、ちょっと凝った掲示板レベルくらいのスクリプトしか作ってないのでどっちでも動くと思うし。
初級者を抜けたくらいなら、どっちの本でもいいんじゃないですか。

あ、ボクの場合は、使ってるスペースが4だったのと、新しいものはバグがあるかも、入れて不具合がでると面倒、っていうのでPHP5を入れるのをやめたんでした。
「全然違うよ。真逆だね。覚えるのが無駄。」って事はないですよ。きっと。
    • good
    • 0
この回答へのお礼

レスありがとうございます。

そうですよね。覚えてムダってことはないですよね。ちょっと勇気がでました(^^)。

どっちにしても、とにかく中級者を目指して手持ちの本を読み解いてみたいと思います。

ありがとうございました。

お礼日時:2005/07/20 09:44

PHP5とPHP4も違いはオブジェクト指向ですね



>>そして、学ぶとしたらどちらが実用的なのでしょうか???
>>

PHP5を学んだほうがいいと思います
PHP4は前のバージョンなんで、別に学ぶ必要性はないかと思います
    • good
    • 0
この回答へのお礼

レスありがとうございます。

実際には、自分のレンタルしているサーバが全てPHP4までしか対応していない、というのが現実です。
5に対応するのがいつなのか問い合わせましたが、まだ未定とのお返事をいただいたので、今のところ(といいますか、5との区別もつかないレベルなので)手持ちの入門書とサンプル集で学んでみたいと思います。

お礼日時:2005/07/20 09:41

私も勉強してるところなのでハッキリは分かりませんが


PHP5でオブジェクト指向がかなりしっかりしたものになったと聞きました

ただ勉強するなら両方ですね(笑)
まぁPHP4をやれば5を勉強する量は少しは減ると思います
まだまだPHP5に対応してるサーバは少ないでしょうから、とりあえず4でその後5かなぁ。
でも逆もありかもしれません。

私は今PHP4を集中的に勉強してます。これが終わり次第すぐにPHP5に移るつもりです~
    • good
    • 0
この回答へのお礼

やっぱりそうですか…。いまどきの入門書のほとんどがPHP5対応ばかりで、PHP4対応の本を探すのが一苦労。通販でも「在庫なし」「絶版」とばかり出てしまって。出版社に問い合わせても「重版未定・在庫なし」と言われたので、PHP5でいいのかどうかちょっと悩んでいました。

なんとか欲しい本はネットオークションに出ていたので落札できれば…という感じです。
他の本はあまりに古すぎる(2000年くらいの)ので、使えない可能性があったので、やめましたが。

なんとか両方勉強したいと思います!

お礼日時:2005/07/19 15:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Q配列をPOSTで受けとる

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j]"];
   print"$foo[$j]";
}
?>


こんな感じのことがしたいのですが
うまくいきません
どうもPOSTされてないみたいでfoo[$j]はnullです
凡ミスな気がしなくもないんですが...プログラム初心者なんで↓↓
教えてください
よろしくお願いします

タイトルのまんまですが
配列をformで送って
それをPOSTで受け取りたいのですが
うまくいきません

具体的に言うと
<?php
print"<form method=POST action=action.php>";

for($i=0; $i<$n; $i++){
   print"<input type=text name=foo[$i]>";
}
print"<input type=hidden name=n value=$n>";
print"<input type=submit value=go>";
print"<form>";
?>


///////////以下action.php//////////////////
<?php
$n = $_POST["n"];
for($j=0; $j<$n; $j++){
   $foo[$j] = $_POST["foo[$j...続きを読む

Aベストアンサー

atsuGTさんこんにちは。


受け取り側は

$foo = $_POST["foo"];

とするだけで$fooに送信された配列が格納されます。


$_POST["foo[添え字]"] ではなく、
$_POST["foo"][添え字] となります。

QParse error: syntax error, unexpected T_STRING in・・・118と出るのですが

Parse error: syntax error, unexpected T_STRING in 。。。 on line 118
とでるのですが対処はどうすればよろしいでしょうか?

Aベストアンサー

118行目をみてみてください。
ダブルクォーテーションのなかでダブルクォーテーションを使ったり
してませんか?
基本的な文法ミスなので、自己解決できないと今後きびしいですよ。

Qforeachで回った数を表示したい

単純な質問ですみません。
====
//getTestlistは別ファイルで定義済み。
<?
$testlist=getTestlist();
foreach($testlist as $test){
?>


<? } ?>
====
例えば↑こんなふうにforeachで$testlistが存在するだけ回したとします。
そのときに何回まわったか?($testが何件あったか?)だけを表示したいのですが、そんなことってできますか?
表示したい位置は<? } ?>の外側にと考えています。
あさってな質問でしたらすみません。
phpVer 4.3

よろしくお願いいたします。

Aベストアンサー

<?
$testlist=getTestlist();
$n=0;
foreach($testlist as $test){
$n++;
?>
<?}?>

<?=$n?>回
とかでよいかと思います。

途中でbreakなどが無ければ
<? echo count($testlist) ?>でも良いかも知れません。

QSQL 複数テーブルのupdate

こんばんは。
複数テーブルの複数カラムをupdateしたいのですが、
うまくいかず困っています。
どなたか助けてください>_<

テーブルA(tableA)のoptionAというカラムと、
テーブルB(tableB)のoptionBというカラムを両方更新したいんです。

やりたい内容のイメージとしてはこんな感じです↓
update tableA a, tableB b
set a.optionA='OK', b.optionB='OK'
where a.student_id=b.student_id and a.name='山田';

どなたかご指導お願いいたします。

Aベストアンサー

where条件に別テーブルの結合を必要とするので、同時に更新したい・・・
ということならば、以下のようなupdate文を2回発行ではだめなんでしょうか?

update tableB b
set b.optionB='OK'
where exists(
select * from tableA a
where a.student_id=b.student_id and a.name='山田'
);

update tableA a
set a.optionA='OK'
where a.name='山田';


人気Q&Aランキング