我有理由绿色OOP里面,我也不太忒组成和__autoload()
如何都应该共同努力。我目前正在试图建立的是一个类,因为它的属性有很多其他的类。为了给出一些上下文,这个特定的应用程序支持正在同时开发的独立角色扮演游戏。PHP 5.3:使用__autoload()来实例化一个类另一个类
基本文件结构变为:
本地主机/项目/
- 的index.php
- 的lib/
本地主机/项目/ lib目录
- 常见.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...
从性格,但我不清楚为什么。通过分配$char
呼叫提出时,common.php
已经加载,这意味着__autoload()
是可用的,而且确实发现Character
。
我的问题: 一)为什么__autoload()
没有一个类的内部工作, 二)如何组成应该在面向对象的PHP做什么?
帮助非常感激!
a)谢谢,我没有意识到我无法做到这一点:分配和b)只是为了确保我遵循,你建议我实例化一个SkillSet类,比如'index .php“,然后传递给'Character',是吗?有没有办法从类里面'__autoload()'? – Jonline
非易失性存储器; ''common.php'中的'__autoload()'只要我按照你的建议在构造函数中完成赋值就可以工作,非常感谢! – Jonline