人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

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

●質問者: sun-chan
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:C言語 Java MySQL PHP require
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● quinoco
●35ポイント

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

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

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

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

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


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

◎質問者からの返答

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

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

ありがとうございます。


2 ● kopj
●35ポイント

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

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...

◎質問者からの返答

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

ありがとうございます。


3 ● Yota
●50ポイント

「もっと細かく分けて書くように」というふうに言われました。(主人は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に移行したほうがいいと思います。

◎質問者からの返答

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

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

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

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


4 ● gekikawa
●50ポイント

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

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

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

という話だと思います。

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

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

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

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

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

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

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

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

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

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

◎質問者からの返答

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

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

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

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


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


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


5 ● gekikawa
●20ポイント ベストアンサー

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

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

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

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

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


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

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

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

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

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


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

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

いかがでしょうか?

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


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

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

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

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

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


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

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

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

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

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

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

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

◎質問者からの返答

ありがとうございます。


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

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


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


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

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

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

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


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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ