我想知道是否允许在另一个类中创建一个类的实例。
或者,我是否必须在外部创建它,然后通过构造函数将其传入?但是我会在不知道是否需要它的情况下创建它。
示例(数据库类):
class some{
if(.....){
include SITE_ROOT . 'applicatie/' . 'db.class.php';
$db=new db
原文由 Richard 发布,翻译遵循 CC BY-SA 4.0 许可协议
(编辑)好的,您要完成的问题和示例令人困惑。从您的示例看来,您正试图在另一个类中定义一个类。
正确的名称是 NESTED CLASS,在 PHP 中是不可能的。因此,对于您的示例,答案是“否”。反正不在 PHP 中。其他语言将允许“嵌套类”。 Java 就是一个例子。
例如,这在 PHP 中不起作用
class outer_class{
class inner_class{
...
}
...
}
现在提出的问题是在另一个类中创建一个类的实例。
对此,答案是“是”,您可以在“类”中实例化一个“对象”。我们一直这样做。
class simple_class{
protected $instanceOfOtherClass;
public function instanciateObject_KeepingAReferenceToIt(){
// create an instance of OtherClass and associate it to $this->instanceOfOtherClass
$this->instanceOfOtherClass = new OtherClass();
}
public function instanciateObject_Without_KeepingAReferenceToIt(){
// create an instance of OtherClass and return it
return new OtherClass();
}
}
一个类甚至可以实例化自己。这就是著名的单例和许多其他 创建模式 所做的。可悲的是,有些人认为了解 依赖注入 意味着他们再也不会在方法中调用 NEW。错误的。
它有助于理解类和对象之间的区别。 类 是用于创建对象的可扩展程序代码模板。 对象 是指类的特定实例。
原文由 Siegfried DuDragon 发布,翻译遵循 CC BY-SA 3.0 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
您不能在另一个类中定义一个类。您应该在类之外包含具有其他类的文件。在您的情况下,这将为您提供两个顶级课程
db
和some
。现在在some
的构造函数中,您可以决定创建一个db
的实例。例如: