私は OOP にかなり慣れていて、合成と__autoload()がどのように連携するのかがよくわかりません。私が現在構築しようとしているのは、プロパティとして他のかなりの数のクラスを持つクラスです。いくつかのコンテキストを示すために、この特定のアプリは、同時に開発されているインディー ロールプレイング ゲームをサポートしています。
基本的なファイル構造は次のとおりです。
ローカルホスト/プロジェクト/
- index.php
- ライブラリ/
ローカルホスト/プロジェクト/lib
- common.php
- クラス/
ローカルホスト/プロジェクト/lib/クラス
- Character.php
- SkillSet.php
- Equipment.php
等々。index.php私は持っています:
<?php
require_once("lib/common.php");
// ...bunch of bootstrapping and what not...
$char = new Character;
?>
次にcommon.php:
<?php
define("DS", "/");
define("SER", "localhost");
define("BASE", "project");
define("LIB", "lib");
define("CLS", "class");
function __autoload($class_name) {
include CLS.DS.$class_name . ".php";
}
最後に、メイン クラス が次のようCharacterに開きます。
<?php
class Character {
// properties
public $skills = new SkillSet;
public function character() {
//init
}
}
?>
これを実行するとParse error: syntax error, unexpected 'new' (T_NEW) in...Character から取得できますが、その理由は明確ではありません。assign の呼び出し$charが行われるまでに、common.phpがロードされています。つまり、__autoload()が利用可能であり、実際に が見つかりCharacterます。
私の質問:__autoload() a)がクラス内で機能しないのは
なぜですか? b)オブジェクト指向 PHP で構成を行うにはどうすればよいですか?
最も感謝ヘルプ!