2012-04-05 5 views
0

私は非常に大きな単一クラスファイルを持っていますが、これをあまりにも大きなクラスに分割して複数のファイルにコードを配布したいのですが、なしでクラスを別のファイルに閉じ込める方法

ファイル:

class name { 

    public function admin_logout(){ 

    if(isset($_SESSION['wcddl_admin'])) { 
     unset($_SESSION['wcddl_admin']); 
      session_destroy(); 
      header("Location:index.php"); 
    } 

} 

ファイルb:

include("a.php"); 

} 

このクラス EXのためだけに同じオブジェクトを使用するには私はそのようなものを試しましたが、うまくいきませんでした。

anyidea?

+2

なぜこのようにしたいですか?ファイルが大きいかどうかは関係ありません。クラス内のメソッドを論理的にクラスにまとめる必要がある場合は、それらをまとめてください。 –

+1

通常、クラスの仕組みの性質だけで、クラスを複数のファイルにまたがることは、決して良い考えではありません。メソッドAがメソッドCを呼び出すメソッドBを呼び出し、メソッドBがクラスファイル2であり、メソッドCがクラスファイル3である場合はどうなりますか?クラスが大きすぎる場合は、テンプレートコードをヘルパークラスにリファクタリングする方法を検討してください。 –

+0

あなたはそれらをすべて統治するために1つのクラスを書くように聞こえます。代わりに、ユーザーがやりとりするHandlerクラスとハンドラーが使用する他のクラスのクラスを記述することも考えられます。 – dnagirl

答えて

1

PHPでファイル間でネイティブにクラスを分割することはできません。私はあなたがファイルを動的に構築し、それをロードするような何かをすることができると思うが、それは苦痛である。

プレミアムクラスに関しては、通常のユーザー向けに基本クラスを作成し、それをプレミアムクラスに拡張することができます。しかし、おそらくあなたはおそらく1つのクラスにあまりにも多くを入れようとしているでしょう。

別の質問を開始し、解決しようとしている問題について説明してください。

1

無効な構文のPHPファイルを作成することはできません。 しかし、メソッドごとにファイルを含めることができます。

class name { 
    public function admin_logout(){ 
     include('methods/admin_logout.php'); 
    } 
    public function mymethod(){ 
     include('methods/mymethod.php'); 
    } 
} 

それとも

class name { 
    public function __call($name, $arguments){ 
     include('methods/'.$name.'.php'); 
    } 
} 

__call魔法のメソッドを持つクラスを構築することができますがそのような何かを行うことを余儀なくされている場合は、多分あなたは、あなたのプロジェクトのアプローチを変更する必要があります。

関連する問題