2012-04-06 15 views
2

私はクラスがいくつかあり、特定のクラスはSDKの一部だけを必要とします。PHPがクラスを使用する場合にのみファイルをロード/インクルードする

例えば

class a { /* requires filea.php*/ }

class b { /*requires fileb.php*/ }

の代わりに、私はちょうどクラスに含めることができます

require_once 'filea.php'; 
require_once 'fileb.php'; 

class a { /*do stuff*/ } 
class b { /*do stuff*/ } 

などの上部にあるファイルを含め、その1のみ負荷時にオブジェクトは作られますか?

class a { require filea.php; /*do stuff*/ } 
class b { require fileb.php; /*do stuff*/ } 
+0

は、ファイルごとに1つのクラスを入れて、上部にあるクラスの依存関係が含まれます。クラスが必要なときは、クラスをロードします。あなたがそれを必要としないなら、それを読み込まないでください。 – netcoder

答えて

1

tight coupling which is considered a bad practiceが含まれます。一緒に働くために2つのクラスが必要な場合は、dependency injectionを使用する必要があります。

しかし、いずれにせよ、自動ロードは、これは簡単にあなたがするために作る必要があります。

+0

私は本当にこのカップリングと依存性注射が何をしているのか全く理解していません。 – netcoder

+0

クラスAには常にfilea.phpが必要です。しかし、突然filea2.phpを使用する必要がある場合はどうなりますか?彼らは今戻ってクラスを編集し、そこに 'if'文を入れてどちらを選択するかを決めなければなりません。クラスはそのロジックを実行すべきではなく、移植性が低くなりました。依存関係インジェクションでは、クラスはそれがどのように起こったのか心配することなく、必要なクラスやファイルを取得していることだけを知っています。 –

+0

私はこれを使ってPayPal SDK用のラッパーを作成しています。特定のタスクではSDKの一部しか必要としません。クラスは定義されたファイルだけを必要とすると言うのは安全です。自動ロードの魔法の機能は、ファイルではなくクラスを定義する必要があると思われますが、これはやりたくありません。 – Ayub

関連する問題