PHP5.3:使用_autoload()在另一个类中实例化一个类
我对OOP相当熟悉,而且我不能完全直觉地理解composition和PHP5.3:使用_autoload()在另一个类中实例化一个类,php,oop,autoload,composition,Php,Oop,Autoload,Composition,我对OOP相当熟悉,而且我不能完全直觉地理解composition和\uu autoload()应该如何协同工作。我目前试图构建的是一个类,它的属性将包含相当多的其他类。为了提供一些上下文,这个特定的应用程序支持一个正在同时开发的独立角色扮演游戏 基本文件结构如下: 本地主机/项目/ index.php 解放党/ localhost/project/lib common.php 阶级/ localhost/project/lib/class Character.php SkillSet
\uu autoload()
应该如何协同工作。我目前试图构建的是一个类,它的属性将包含相当多的其他类。为了提供一些上下文,这个特定的应用程序支持一个正在同时开发的独立角色扮演游戏
基本文件结构如下:
本地主机/项目/
- index.php
- 解放党/
- common.php
- 阶级/
- Character.php
- SkillSet.php
- Equipment.php
index.php
中,我有:
<?php
require_once("lib/common.php");
// ...bunch of bootstrapping and what not...
$char = new Character;
?>
最后,主类,Character
,打开时显示:
<?php
class Character {
// properties
public $skills = new SkillSet;
public function character() {
//init
}
}
?>
当我运行这个程序时,我从Character中得到了Parse error:syntax error,在…
中出现了意外的“new”(T_new),但我不清楚原因。调用assign$char
时,common.php
已经加载,这意味着\uuuu autoload()
可用,并且它确实找到了字符
我的问题:
a) 为什么\uuu autoload()
不能在类中工作,以及
b) 在面向对象的PHP中应该如何进行组合
非常感谢您的帮助 该语法错误与自动加载无关。在代码中的这一点上,您根本无法创建该类(这不是Java)。只能将标量的静态值指定为属性的初始值 如果希望用另一个类初始化该属性,请在
\uu construct()
函数中指定它
关于成分:使用依赖性注射。允许外部世界传递要使用的类,而不是在该类内部创建该类。该语法错误与自动加载无关。在代码中的这一点上,您根本无法创建该类(这不是Java)。只能将标量的静态值指定为属性的初始值 如果希望用另一个类初始化该属性,请在
\uu construct()
函数中指定它
关于成分:使用依赖性注射。允许外部世界传递要使用的类,而不是在该类内部创建它。a)谢谢,我没有意识到我不能这样做,re:assign和b)只是为了确保我遵循,你建议我在中实例化一个SkillSet
类,比如说,index.php
,然后将它传递给Character
,是这样吗?没有办法从类内部\uuu autoload()
?NVM;common.php
中的\uuu autoload()
只要我按照您的建议在构造函数中完成赋值,就可以正常工作,非常感谢!a) 谢谢,我没有意识到我不能这样做:赋值和b)只是为了确保我遵循,你建议我在中实例化一个SkillSet
类,比如说,index.php
,然后将它传递给Character
,对吗?没有办法从类内部\uuu autoload()
?NVM;common.php
中的\uuu autoload()
只要我按照您的建议在构造函数中完成赋值,就可以正常工作,非常感谢!
<?php
class Character {
// properties
public $skills = new SkillSet;
public function character() {
//init
}
}
?>