私は 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 で構成を行うにはどうすればよいですか?
最も感謝ヘルプ!