phpでプログラムを書いていますが、主人に見せたところ、「もっと細かく分けて書くように」というふうに言われました。(主人はC言語とかJAVAが分かります)


例えばある値の今月の最大値を求める部分、は一つのまとまりにして、また違うことをやっていることは違うもう一つのまとまりにする、というようなことのようです。

そこで質問なのですが、PHP4の場合、どうやって分けたらいいのでしょうか?

今はMySQLに接続するという部分のみ、別のphpにしていて、 requireを使って読み込んでいますが、同じような方法でいいのでしょうか?

変数は異なるまとまりに共通して使えるのでしょうか?

こういうことを検索してみようと思ったのですが、なんと言う言葉で表現するのか分からないので(モジュール化?クラス?)うまくヒットしませんでした。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2007/05/11 15:07:00
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:gekikawa No.5

回答回数110ベストアンサー獲得回数11

ポイント20pt

>外から、決められた設計に合わせて、変数とかに数を入れると、

>ファイル内でいろいろやってくれて、できあがったものが外に

>出てくるようになる・・・というような感じでしょうか。

そういうニュアンスで捕らえてもよさそうです。

(ちょっと関数?のように思っていらっしゃるかもしれませんが...)


クラスの説明でよく「設計図」という言葉が使われます。

設計図ごとに別ファイルにしておいて、複数の設計図を組み合わせ

て実際に特定のプログラムを作っていくという感じでしょう。

何でも良いので実際にクラスをご自身で定義してプログラムを

組んでみるとわかってくると思います。


>PHP4では、これは可能なんでしょうか。

十分可能だと思います。具体例としてPEARなどを参考にされていは

いかがでしょうか?

http://pear.php.net/manual/ja/


ただし、すでに回答にあるように、PHP5のほうがよりオブジェクト指向

のプログラミングが可能となっていますね。

http://www.php.net/manual/ja/language.oop.php

(PHP5の方がオブジェクト指向言語の振る舞いにより近い動作

をするという表現がマニュアルにはあります。)


「オブジェクト指向」に対して「手続き型」という言葉が

ありますが、当然それぞれメリット・デメリットがあります。

PHPは結構いろいろできてしまうので、オブジェクト指向で

比較的規模の大きいプログラムが可能ですが、PHPの大きなメリット

である「HTMLに埋め込むことができる」という手軽さはオブジェクト

指向とは相容れない部分だと私は思っています。(あくまでも個人的にですが...)

まずはクラスから始めてみては如何でしょうか?

id:sun-chan

ありがとうございます。


PHP5のほうがクラスに対応しているというのは本を読んで知っていたのですが、何しろPHP4の本は1冊も持っていない(あんまり売ってないですよね?)ので、はたしてクラスというのが出来るのかどうかすら分からなかったんです…

マンモスの絵がかいてある本(タイトルは覚えていなんですが。。。)のPHP4版がネットにあったと思うので、それでも見ながらクラスを調べてみます。


マニュアルは全部書いてあって便利なんですが、初心者の私はどこを見ていいのかすぐにはわからなかったりして、、、


言い訳ばっかりですが、とりあえず

「何でも良いので実際にクラスをご自身で定義してプログラムを

組んでみるとわかってくると思います。」

を実行してみたいと思います。


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

2007/05/11 08:09:53

その他の回答4件)

id:quinoco No.1

回答回数18ベストアンサー獲得回数0

ポイント35pt

状況がよく分からないのですが、関数やクラスを余り作らずにベタ書きされているのでしょうか。でしたら関数化を行うことでソースの見通しをよくすることができると思います。

関数の作り方はしたのURLが参考になると思います。

http://wspri.dip.jp/index.html?mainframe/main/php/howto/function...

関数を必要に応じて適宜宣言しているのであれば、クラス化のことかも知れないので、そちらに関してもURLを。

http://www.scollabo.com/banban/php/php_11.html


蛇足ですが、ご主人が「もっと細かく分けて書くように」といわれたのは、スクリプトへのバグの混入の防止や保守性の維持を考えてのことだと思います。スクリプトを書いているのが仕事でも趣味でも、その辺りのことは言語を問わず役に立つ知識なので、身につけて損はないと思います。

id:sun-chan

違うファイルにするというような感じで話していたんですが・・・

また帰ってきたら聞いてみます。

ありがとうございます。

2007/05/10 23:59:53
id:kopj No.2

回答回数123ベストアンサー獲得回数6

ポイント35pt

細かくというのは、関数にしろということでしょうね。

http://www.scollabo.com/banban/php/php_10.html

こちらをみて 関数に分けたらいかがでしょうか?

http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A...

http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A...

id:sun-chan

関数もよくわかっていないので、勉強してみます。

ありがとうございます。

2007/05/10 23:59:46
id:Yota No.3

回答回数453ベストアンサー獲得回数28

ポイント50pt

「もっと細かく分けて書くように」というふうに言われました。(主人はC言語とかJAVAが分かります)

多分オブジェクト指向とかクラスという意味ではないでしょうか。

http://www.php.net/manual/ja/language.oop.php

クラスをあるファイルにまとめておく、クラスごとにファイルを作る、というようなことが考えられます。

今はMySQLに接続するという部分のみ、別のphpにしていて、 requireを使って読み込んでいますが、同じような方法でいいのでしょうか?

変数は異なるまとまりに共通して使えるのでしょうか?

たとえば、いつも接続する先を

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

として$linkという変数にいれて別ファイルにしておく。DBを呼ぶページではこれをrequireする。というふうにすれば、たとえばDBサーバやパスワードが変わったときにこのファイルのみ修正すればいいので便利ですね。もちろんこの変数はrequireすればどのファイルでも、何回でも使えます。

余談ですが、もしオブジェクト指向という意図であればよりJAVAなどに近いPHP5に移行したほうがいいと思います。

id:sun-chan

$link だけを別ファイルにするというのもできるんですね。

PHP5は今使っているレンタルサーバに入っていないみたいなので、使えないんです。

現在本屋で売っている本もほとんどPHP5なので、できたらそちらを使いたいんですが・・・

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

2007/05/11 00:01:16
id:gekikawa No.4

回答回数110ベストアンサー獲得回数11

ポイント50pt

多分、クラスを利用してモジュールごとにファイルに分けなさい

ということではないでしょうか?

いわゆる「オブジェクト指向」のプログラミングを目指しなさい

という話だと思います。

(JAVAはそういう言語ですもんね)

>今はMySQLに接続するという部分のみ、別のphpにしていて、 requireを使って

この場合はおそらく、呼び出しスクリプトと、呼ばれるスクリプトで

共通の変数を使っていると思います。

しかしモジュールに分けた場合は、ファイル内でどんな変数を

使っていたか、一々覚えていられないので、変数の有効範囲

(スコープというそうです)はそのファイル内になるように

設計することになると思います。

http://phpspot.net/php/pg%83I%83u%83W%83F%83N%83g%8Ew%8C%FC%82%C...

私もオブジェクト指向の頭になりたい!!

id:sun-chan

> 多分、クラスを利用してモジュールごとにファイルに分けなさい

> ということではないでしょうか?

そういうことのようです。主人もPHPのことはよく知らないし、私はオブジェクト指向が分からないし、いろいろ例を出して説明してもらってるんですが、理解しあえないでいます・・・

でも皆さんのご説明もあわせてなんとなくわかってきました。


外から、決められた設計に合わせて、変数とかに数を入れると、ファイル内でいろいろやってくれて、できあがったものが外に出てくるようになる・・・というような感じでしょうか。


PHP4では、これは可能なんでしょうか。

2007/05/11 00:04:10
id:gekikawa No.5

回答回数110ベストアンサー獲得回数11ここでベストアンサー

ポイント20pt

>外から、決められた設計に合わせて、変数とかに数を入れると、

>ファイル内でいろいろやってくれて、できあがったものが外に

>出てくるようになる・・・というような感じでしょうか。

そういうニュアンスで捕らえてもよさそうです。

(ちょっと関数?のように思っていらっしゃるかもしれませんが...)


クラスの説明でよく「設計図」という言葉が使われます。

設計図ごとに別ファイルにしておいて、複数の設計図を組み合わせ

て実際に特定のプログラムを作っていくという感じでしょう。

何でも良いので実際にクラスをご自身で定義してプログラムを

組んでみるとわかってくると思います。


>PHP4では、これは可能なんでしょうか。

十分可能だと思います。具体例としてPEARなどを参考にされていは

いかがでしょうか?

http://pear.php.net/manual/ja/


ただし、すでに回答にあるように、PHP5のほうがよりオブジェクト指向

のプログラミングが可能となっていますね。

http://www.php.net/manual/ja/language.oop.php

(PHP5の方がオブジェクト指向言語の振る舞いにより近い動作

をするという表現がマニュアルにはあります。)


「オブジェクト指向」に対して「手続き型」という言葉が

ありますが、当然それぞれメリット・デメリットがあります。

PHPは結構いろいろできてしまうので、オブジェクト指向で

比較的規模の大きいプログラムが可能ですが、PHPの大きなメリット

である「HTMLに埋め込むことができる」という手軽さはオブジェクト

指向とは相容れない部分だと私は思っています。(あくまでも個人的にですが...)

まずはクラスから始めてみては如何でしょうか?

id:sun-chan

ありがとうございます。


PHP5のほうがクラスに対応しているというのは本を読んで知っていたのですが、何しろPHP4の本は1冊も持っていない(あんまり売ってないですよね?)ので、はたしてクラスというのが出来るのかどうかすら分からなかったんです…

マンモスの絵がかいてある本(タイトルは覚えていなんですが。。。)のPHP4版がネットにあったと思うので、それでも見ながらクラスを調べてみます。


マニュアルは全部書いてあって便利なんですが、初心者の私はどこを見ていいのかすぐにはわからなかったりして、、、


言い訳ばっかりですが、とりあえず

「何でも良いので実際にクラスをご自身で定義してプログラムを

組んでみるとわかってくると思います。」

を実行してみたいと思います。


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

2007/05/11 08:09:53
  • id:Yota
    もしPHP4の書籍がほしいならアマゾンで検索すれば、新品中古品などいろいろありますよ。
    http://www.amazon.co.jp/

  • id:sun-chan
    実際に見てみないと、買っても分かりづらいものが
    あるんじゃないかなあと思ってしまって、amazonで
    調べて本屋にでかけるんですが、あまりPHP4の本は
    店頭にはもう出ていないんですよね…

    とりあえず大阪梅田では紀伊国屋でマンモスの本
    (徹底攻略?)のPHP4版があるのは見かけたのですが…

    なにか他にPHP4でお勧めの本ってありますか?
    初心者にでも分かりやすい本がないかなあと思って
    探しているところです。

    PHP5の本は逆引きの本と、もう1冊説明的なものを
    買いました。(買ったあとに、自分が借りているサーバでは
    使えないとわかってしまいました^^;)
  • id:Yota
    わたしがいいと思ったのは、
    1.基礎PHP(今売ってるやつではなくPHP4時代のやつ)
    2.今日から使えるPHP4サンプル集
    3.PEAR入門PHP標準ライブラリを極める
    どういうやけか3冊とも山田よしひろさんという人が絡んでいる。

    有名な青マンモスは余りよくなかった。
  • id:sun-chan
    ありがとうございます!

    マンモスの本はなんだか表紙が怖くて…(^^;)

    なのでお勧めの3冊を、本屋や古本屋で探して
    みますね。図書館も行ってみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません