• ベストアンサー

PHP4、PHP5 1ファイル複数クラスのルール 

とあるPHP4で書かれたスクリプトを見ていたら、1つのファイルに複数のクラスが書いてありました。 1つのファイルに1つのクラスを推奨という記述は見かけるのですが、 PHPの仕様としてはどんな感じになっているのでしょうか? 「javaで同一ファイル内にpublicなクラスを複数作成できない」てのを見かけたのですが、PHPにはこんなルールはあるのでしょうか? また1ファイル複数クラスの記述に関して、PHP4とPHP5で、違いがあれば 知りたいです

  • re999
  • お礼率61% (476/777)
  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

仕様としては問題ありません。 http://www.php.net/manual/ja/language.oop5.basic.php 扱い的にはfunctionと同じです。別ファイルにしてrequireしないといけないということもありません。分けるとすればあくまでも作成側の都合です。 php4のクラスはphp5(以降)とかなり趣きが違いますが、class クラス名に続く波括弧内に記述するという点は同じです。 http://www.php.net/manual/ja/keyword.class.php

re999
質問者

お礼

回答ありがとうございました。 >別ファイルにしてrequireしないといけないということもありません。分けるとすればあくまでも作成側の都合です。 参考になりました

その他の回答 (1)

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.2

javaの仕様はわかりませんが・・・ 別に1ファイルにクラス定義が複数あるのは問題ないはず。 といってもあまり見かける事はないですが。 ある程度大きな規模の開発であれば、抽象クラスの基本定義だけのファイルとして複数クラスを1つのファイルに書いたりしてるのは見たことがあります。 > また1ファイル複数クラスの記述に関して、PHP4とPHP5で、違いがあれば知りたいです クラス自体は4と5で違いは大きいですが、今回の質問に関しては別にないんじゃないですかね?

re999
質問者

お礼

回答ありがとうございました >抽象クラスの基本定義だけのファイルとして複数クラスを1つのファイルに書いたりしてるのは見たことがあります。 なるほど。確かにそういうときは、クラス毎にファイルを分けるのも、という気もします。 参考になりましたー

関連するQ&A

  • 複数の外部ファイルの読み込み

    外部ファイルを複数読み込もうとしても、なぜか、上手くいきません。 ジャバスクリプトを一つだけにすると正常になり、二つにすると、どれか一つだけになってしまいます。 例えばAのスクリプトが上手くいけば、Bが正常に動かなくなったりと言った感じです。 スクリプトはそれぞれ、違ったものになってます。 原因がよくわかりませんが、何が悪いんでしょうか?

  • PHPのクラス名の付け方

    PHPを勉強中です。 タイトルのとおり、クラス名の付け方をどのようにしたらよいでしょうか? ネットで探しても、いい案がないようです。 Javaでは、ドメイン名を逆にしてパッケージをつけます。 これで世界中でユニークになります。 例えばユーザ情報のクラスということでUserとクラス名をすると、 他の人が作ったクラス名と衝突する恐れがあります。 これを回避するのにクラス名のルールがありますでしょうか?

    • ベストアンサー
    • PHP
  • ひとつのファイルにクラスは1つ?

    こんにちは。C#をやっていた者ですが、プログラミングコンテストに出場するにあたって、Javaを勉強しています。 基本的な部分は同じで、似てる部分も多々あって習得しやすいと思っていたのですが、どうやら細かい違いがあり、悩まされています。 C#では、ひとつのソースファイルに複数のクラスを記述できました。Javaの参考書でもサンプルコードに、 class Point3D{ public double x,y,z; } class example{ public static void main(String args[]){ Point3D p1 = new Point3D(); } } なんてありましたが、どうもEclipseにこれをいれると、 トークン "class" に構文エラーがあります。正しくは @ です と出てきてしまいます。メンバークラスを使えば済む話ですが、参考書にこのように書いてあるのにエラーが出るのはなぜでしょうか?C#だとすっきり通るのですが・・・。 そもそもオブジェクト指向について私はまだ勉強が足りないのでしょうか? ご教授願います。

  • 1 つのヘッダファイルに複数のクラスって?

    C++ でコンソールアプリケーションを作っています。 プログラムの規模が大きくなり,クラスの数も増えてきました。 これまでヘッダファイルとクラスを一対一対応させてきました。 クラスの増加に伴い,ヘッダファイルがかなり増えてしまいました。 疑問に思ったのですが 1 つのヘッダファイルに記述するクラスの個数に,決まりはあるのでしょうか? ためしに 1 つのヘッダファイルに 2 つのクラスを書くと,問題なく動作しました。 ちなみに,その 2 つのクラスの関係は,お互いに完全に独立し合っている関係です。 (継承や friend の利用など一切なし,ということです。) 1 つのヘッダファイルに複数のクラスを書くことは OK なのでしょうか? またこうすることで生じる問題があれば,お聞かせいただければ幸いです。 (プログラミング超初心者につきマヌケな質問をしているかもしれません)

  • 内部クラスを別ファイルに

    こんにちは。 お世話になります。 早速、質問なのですが、 内部クラスを別のファイルに記述することは出来ますでしょうか? // MainClass.java public class MainClass{ /* */ private class InnerClass1{ } private class InnerClass2{ } } これのInnerClass1とInnerClass2をそれぞれ InnerClass1.java、InnerClass2.javaファイルのように別のファイルに記述したいと思っています。 出来そうな気はするのですが内部クラスについて 書いてある本やサイトはすべて同じファイルに書いてあったもので・・・ 方法がありましたらよろしくお願い致します。

    • ベストアンサー
    • Java
  • java.util.ArrayListクラスの継承

    Java5年ぶりでちょっと新しい仕様について教えてください。。 java.util.ArrayListクラスを継承したクラスを作成しようと思っているのですが、継承後のクラスでも ArrayListChild<E> というような記述を有効にするには、一体どのような処理をすればよいのでしょうか。 そもそも、<E>とコンストラクタの後などに付けるこの仕様、なんて名前の仕様なんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • クラスファイルについて

    javaで例えばjavac Test.javaと打ち込むとコンパイルできディレクトリにTest.classというファイルができるのにもかかわらず、java Test と打ち込むとエラーがでてしまいます。クラスの定義がないみたいな感じででてきてしまいます。コマンドプロンプトのdir Testr.classと入力しても確かにファイルは存在しているのですが・・・。なぜなのでしょうか?

  • クラス中でコンストラクタを使わず変数に代入をする理由は?

    JAVAやJavascript、最近オブジェクト指向的な記述が可能になったphpなどの言語で次のようなクラス定義が可能です。 <JAVAの場合> class A { public int i1 = 1; public int i2; A() { i2 = 2; } } しかし最近覚えたC++では、例の「public int i1 = 1;」のようなクラスのスコープ内で代入を行うことは出来ず、その場所では「public int i2;」のように宣言のみ、代入はコンストラクタで行うようになっています。この場合はなぜ「public int i1 = 1;」はダメなのかと疑問に思っても「そういう仕様だ」と言われれば納得できます(やり方が1つだけなので)。 ではJAVAなどの言語で、例のような場所で「public int i1 = 1;」のような宣言と代入を行うことは、代入をコンストラクタを用いて行うこととどのような違いがあるのでしょうか?また、どちらが推奨されるのでしょうか?

  • PHP内でjsファイルの関数は使えないのでしょうか

    こんばんは、Webページ制作の勉強で問題にぶつかり、少々お知恵をお借りしたく質問させて頂きました。 あるPHPファイルの中の <!doctype html> <html> //ここにHTMLの記述があるとします。 </html> のHTMLの記述の中に <script src="example_A.js"></script> <script src="example_B.js"></script> のような形で他のページでも使っているJavascriptのファイルを読み込んで使用しようとしたのですが、一部の処理だけが行われないようのです。 そこでjsファイルの中で使えない記述に共通点が無いか確認してみたところ、 $(function() {   //ここに処理 }); のように、関数のみが動作して居ない事が解りました。 そこで質問なのですが、PHPファイルの中では、<html>の中で記述されたスクリプトだとしても関数の中で記述された処理は使えないという事なのでしょうか? また、もしPHPの中でも関数を動作させる方法があれば、教えて頂けないでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • 超初心者です。クラスファイルの作成について、

    超初心者ですが宜しくお願いします。 phpの学習をはじめて、演算、比較、繰り返し、などを初級本の通り進めてきたのですが、classの作成で悩んでいます。 拡張子を.phpではなく.classで保存と書いてあるのですがテキスト通り試みても画面に出力されません。(errorも出ちゃいます。)テキストではそのままクラスファイルを実行すると画面に出力されると書いてあるのですが.classの保存ではいけないのでしょうか?・・ javaのmainクラス作成の様に処理されると考えていたのですが・・・ それと環境ですが、php5でエディタは、DreamWになります。 初歩的な質問ですがどうぞ宜しくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう