私は少数のライブラリ/クラスを最初からPHPで作成してきました。私はcodeigniterの背景から来て、私は同様の機能を持ついくつかのライブラリを作ろうとしています。私はオブジェクトに関する問題に走り続けています。オブジェクトとライブラリを整理する
何とかスーパーオブジェクト$this
を作成する最善の方法はありますか?私の主な問題は、私はビューオブジェクトを作成したと私はそうのように見えるload
と呼ばれる機能を実行することです:
class View {
public function __construct() {
}
public function load($file = NULL, $data = array()) {
if($file) {
$file .= '.php';
if(file_exists($file)) {
// Extract variables BEFORE including the file
extract($data);
include $file;
return TRUE;
} else {
echo 'View not found';
return FALSE;
}
} else {
return FALSE;
}
}
}
はその後、私のPHPファイルで、私は次のようになりますどのトップinclude 'libraries.php';
であります
include 'database.php';
include 'view.php';
include 'input.php';
include 'form.php';
$config = array(
'host' => 'localhost',
'username' => 'username',
'password' => 'password',
'database' => 'database'
);
$database = new Database($config);
$view = new View();
$input = new Input();
$form = new Form();
私はライブラリを含むファイルから、エラーなしで$form->value('name');
のようなものを書くことができます。私はこのような何かを行う場合は、:
$view->load('folder/index', array('var_name' => 'var_value'));
folder/index.php
ファイルから私はちょうど罰金
$var_name
ではなく
$form->value('name');
にアクセスすることができます。私はエラーを受け取ります
Call to a member function value() on a non-object in ...
私の質問はどのように再利用可能な方法で私のライブラリとクラスを整理できますか?私はフロントローダー(すべてが最初に実行されるファイルindex.php
)を使いたくない。これは私が授業を書いた方法の問題かもしれませんが、物事がどこにあるかなどの大きな問題だと思います。
使用名前空間(少なくとも偽のもの)と自動ロード – arnaud576875
'私は'私がなぜ本当に興味フロントローダ(すべては最初に通ることindex.phpファイル)を使用したくありませんか? – Alfwed
レジストリを使用して、私はそれをお勧めしませんどこでもあなたのすべてのオブジェクトにアクセスすることができます。別のオプションは依存性注入を行うことです。 – Alfwed