2016-04-03 15 views
0

私は完全なOOスタイルでプロジェクトをやっているのは初めてです。私のクラスは非常に乱雑に見えます。たくさんのクラスファイルで自分がrequire_onceをやっているのを見て、クラスの新しいインスタンスを作成しました。別のPHPクラス初期化ファイル

<?php 

require_once 'resources/config.php'; 
require_once 'classes/db.php'; 
require_once 'classes/auth.php'; 
require_once 'classes/msg.php'; 
require_once 'classes/validate.php'; 
require_once 'classes/view.php'; 
require_once 'functions/misc.php'; 

//DB connection 
$db = new DB(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
$dbConnection = $db->connect(); 

$msg_class = new Msg(); 
$validate = new Validate($dbConnection); 

$msg_strings[] = array(); 

$view = new View($dbConnection); 

?> 

は、今私はちょうどこのファイルにrequire_onceをやってる:だから私はそうのように別々のファイル(init.php)にすべての必要と作成のインスタンスを置きます。

そして私はいくつかのページでViewクラスを使用しません。だから私はそれを使用するつもりがない場合、クラスのインスタンスを作成するパフォーマンスのために悪い練習といいですか?

+0

「自動読み込み」をご覧ください。はるかに堅牢で便利です。 – arkascha

+0

[autoloading](http://php.net/manual/en/language.oop5.autoload.php)の詳細なマニュアルを読んでから始めることができます。その後、その道をたどるとたくさんの例が見つかりますまわり。 – YvesLeBorg

答えて

3

ベストプラクティスはautoloaderは、PHPは、この目的のために優れたオートローダーを提供して使用することが一般的である - SPLオートローダを:http://php.net/manual/en/function.spl-autoload-register.php

あなたはクラスが見つからなかった場合に自動的にPHPによって呼び出されるコールバックを作成することができ、で

function auto_loader($classname) { 
    //search in the classes folder for a class file. 
    include 'classes/' . $classname . '.php'; 
} 

function auto_load_somethingelse($class){ 
    //include here 
} 

//register the autoloaders 
spl_autoload_register('auto_loader'); 
spl_autoload_register('auto_load_somethingelse'); 

置き、この - あなたが必要とすることができ、このコールバックで/ PHPがあなたのクラスを検索するフォルダのパスを含め、あなたはまた、それらが定義されている順序で呼び出されます複数のオートローダ、以下の例を登録することができますあなたの電話をかけたファイルの先頭init.phpファイルとautoloaderは、自動読み込みが必要なクラスが見つかるたびに呼び出されます。

関連する問題