例えばある値の今月の最大値を求める部分、は一つのまとまりにして、また違うことをやっていることは違うもう一つのまとまりにする、というようなことのようです。
そこで質問なのですが、PHP4の場合、どうやって分けたらいいのでしょうか?
今はMySQLに接続するという部分のみ、別のphpにしていて、 requireを使って読み込んでいますが、同じような方法でいいのでしょうか?
変数は異なるまとまりに共通して使えるのでしょうか?
こういうことを検索してみようと思ったのですが、なんと言う言葉で表現するのか分からないので(モジュール化?クラス?)うまくヒットしませんでした。
>外から、決められた設計に合わせて、変数とかに数を入れると、
>ファイル内でいろいろやってくれて、できあがったものが外に
>出てくるようになる・・・というような感じでしょうか。
そういうニュアンスで捕らえてもよさそうです。
(ちょっと関数?のように思っていらっしゃるかもしれませんが...)
クラスの説明でよく「設計図」という言葉が使われます。
設計図ごとに別ファイルにしておいて、複数の設計図を組み合わせ
て実際に特定のプログラムを作っていくという感じでしょう。
何でも良いので実際にクラスをご自身で定義してプログラムを
組んでみるとわかってくると思います。
>PHP4では、これは可能なんでしょうか。
十分可能だと思います。具体例としてPEARなどを参考にされていは
いかがでしょうか?
http://pear.php.net/manual/ja/
ただし、すでに回答にあるように、PHP5のほうがよりオブジェクト指向
のプログラミングが可能となっていますね。
http://www.php.net/manual/ja/language.oop.php
(PHP5の方がオブジェクト指向言語の振る舞いにより近い動作
をするという表現がマニュアルにはあります。)
「オブジェクト指向」に対して「手続き型」という言葉が
ありますが、当然それぞれメリット・デメリットがあります。
PHPは結構いろいろできてしまうので、オブジェクト指向で
比較的規模の大きいプログラムが可能ですが、PHPの大きなメリット
である「HTMLに埋め込むことができる」という手軽さはオブジェクト
指向とは相容れない部分だと私は思っています。(あくまでも個人的にですが...)
まずはクラスから始めてみては如何でしょうか?
状況がよく分からないのですが、関数やクラスを余り作らずにベタ書きされているのでしょうか。でしたら関数化を行うことでソースの見通しをよくすることができると思います。
関数の作り方はしたのURLが参考になると思います。
http://wspri.dip.jp/index.html?mainframe/main/php/howto/function...
関数を必要に応じて適宜宣言しているのであれば、クラス化のことかも知れないので、そちらに関してもURLを。
http://www.scollabo.com/banban/php/php_11.html
蛇足ですが、ご主人が「もっと細かく分けて書くように」といわれたのは、スクリプトへのバグの混入の防止や保守性の維持を考えてのことだと思います。スクリプトを書いているのが仕事でも趣味でも、その辺りのことは言語を問わず役に立つ知識なので、身につけて損はないと思います。
違うファイルにするというような感じで話していたんですが・・・
また帰ってきたら聞いてみます。
ありがとうございます。
細かくというのは、関数にしろということでしょうね。
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...
関数もよくわかっていないので、勉強してみます。
ありがとうございます。
「もっと細かく分けて書くように」というふうに言われました。(主人は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なので、できたらそちらを使いたいんですが・・・
ありがとうございました。
多分、クラスを利用してモジュールごとにファイルに分けなさい
ということではないでしょうか?
いわゆる「オブジェクト指向」のプログラミングを目指しなさい
という話だと思います。
(JAVAはそういう言語ですもんね)
>今はMySQLに接続するという部分のみ、別のphpにしていて、 requireを使って
この場合はおそらく、呼び出しスクリプトと、呼ばれるスクリプトで
共通の変数を使っていると思います。
しかしモジュールに分けた場合は、ファイル内でどんな変数を
使っていたか、一々覚えていられないので、変数の有効範囲
(スコープというそうです)はそのファイル内になるように
設計することになると思います。
http://phpspot.net/php/pg%83I%83u%83W%83F%83N%83g%8Ew%8C%FC%82%C...
私もオブジェクト指向の頭になりたい!!
> 多分、クラスを利用してモジュールごとにファイルに分けなさい
> ということではないでしょうか?
そういうことのようです。主人もPHPのことはよく知らないし、私はオブジェクト指向が分からないし、いろいろ例を出して説明してもらってるんですが、理解しあえないでいます・・・
でも皆さんのご説明もあわせてなんとなくわかってきました。
外から、決められた設計に合わせて、変数とかに数を入れると、ファイル内でいろいろやってくれて、できあがったものが外に出てくるようになる・・・というような感じでしょうか。
PHP4では、これは可能なんでしょうか。
>外から、決められた設計に合わせて、変数とかに数を入れると、
>ファイル内でいろいろやってくれて、できあがったものが外に
>出てくるようになる・・・というような感じでしょうか。
そういうニュアンスで捕らえてもよさそうです。
(ちょっと関数?のように思っていらっしゃるかもしれませんが...)
クラスの説明でよく「設計図」という言葉が使われます。
設計図ごとに別ファイルにしておいて、複数の設計図を組み合わせ
て実際に特定のプログラムを作っていくという感じでしょう。
何でも良いので実際にクラスをご自身で定義してプログラムを
組んでみるとわかってくると思います。
>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版がネットにあったと思うので、それでも見ながらクラスを調べてみます。
マニュアルは全部書いてあって便利なんですが、初心者の私はどこを見ていいのかすぐにはわからなかったりして、、、
言い訳ばっかりですが、とりあえず
「何でも良いので実際にクラスをご自身で定義してプログラムを
組んでみるとわかってくると思います。」
を実行してみたいと思います。
ありがとうございました。
ありがとうございます。
PHP5のほうがクラスに対応しているというのは本を読んで知っていたのですが、何しろPHP4の本は1冊も持っていない(あんまり売ってないですよね?)ので、はたしてクラスというのが出来るのかどうかすら分からなかったんです…
マンモスの絵がかいてある本(タイトルは覚えていなんですが。。。)のPHP4版がネットにあったと思うので、それでも見ながらクラスを調べてみます。
マニュアルは全部書いてあって便利なんですが、初心者の私はどこを見ていいのかすぐにはわからなかったりして、、、
言い訳ばっかりですが、とりあえず
「何でも良いので実際にクラスをご自身で定義してプログラムを
組んでみるとわかってくると思います。」
を実行してみたいと思います。
ありがとうございました。