Php 一个对象可以包含另一个相同类型的对象吗?

Php 一个对象可以包含另一个相同类型的对象吗?,php,Php,我阅读了一些其他语言的问题和答案,但没有看到任何专门针对PHP的问题和答案 以下内容在PHP中有效吗 class foo { // constructor, etc.. public function bar() { $newFoo = new foo(); // do something } } 是的,这是有效的,只要你不在构造函数中创建相同类型的对象。是的,这是有效的,只要你不在构造函数中创建相同类型的对象。是的,这是有效

我阅读了一些其他语言的问题和答案,但没有看到任何专门针对PHP的问题和答案

以下内容在PHP中有效吗

class foo 
{
    // constructor, etc..

    public function bar()
    {
        $newFoo = new foo();
        // do something
    }
}

是的,这是有效的,只要你不在构造函数中创建相同类型的对象。

是的,这是有效的,只要你不在构造函数中创建相同类型的对象。

是的,这是有效的。可以创建嵌套的对象集。尽管在构造函数中这样做会导致无限递归

额外的!您甚至可以将对象链接到其自身

$this->myself = $this;

它将链接到同一个对象。

是的,它将是有效的。可以创建嵌套的对象集。尽管在构造函数中这样做会导致无限递归

额外的!您甚至可以将对象链接到其自身

$this->myself = $this;

它会链接到同一个对象。

没有什么可以阻止它。

没有什么可以阻止它。

简短回答:是的,它有效

几乎可以在php代码的任何位置实例化对象。类内部的方法并没有什么不同,但如果它是不同的类,则必须确保首先包含类文件,例如

<?php

    require_once './foo.class.php';

    class bar{
        //class stuff
        public doThingsWithFoo(){
            $foo = new foo();
        }
    }
?>
但是,在同一类的方法中使用同一对象的另一个实例,除了可能的常识之外,没有什么别的,就像您正在做的那样:

class foo 
{
    // constructor, etc..

    public function bar()
    {
        $newFoo = new foo();
        // do something with this instance of foo that you cannot do using $this
    }
}

我希望这有帮助。干杯

简短回答:是的,它有效

几乎可以在php代码的任何位置实例化对象。类内部的方法并没有什么不同,但如果它是不同的类,则必须确保首先包含类文件,例如

<?php

    require_once './foo.class.php';

    class bar{
        //class stuff
        public doThingsWithFoo(){
            $foo = new foo();
        }
    }
?>
但是,在同一类的方法中使用同一对象的另一个实例,除了可能的常识之外,没有什么别的,就像您正在做的那样:

class foo 
{
    // constructor, etc..

    public function bar()
    {
        $newFoo = new foo();
        // do something with this instance of foo that you cannot do using $this
    }
}

我希望这有帮助。干杯

了解PHP中某些内容是否有效的最佳方法是在头文件中使用此函数:

<?php
error_reporting(E_ALL|E_NOTICE);
?>
甚至PHP也会报告失败,例如不使用isset

其他做法:

始终使用$\u GET、$\u POST而不是全局

不要使用此:$\u GET[test]这是最好的$\u GET['test']

始终阅读PHP文档以查看函数是否正确 不推荐的文档:


注意:您的构造函数是有效的。

了解PHP中某些内容是否有效的最佳方法是在头文件中使用此函数:

<?php
error_reporting(E_ALL|E_NOTICE);
?>
甚至PHP也会报告失败,例如不使用isset

其他做法:

始终使用$\u GET、$\u POST而不是全局

不要使用此:$\u GET[test]这是最好的$\u GET['test']

始终阅读PHP文档以查看函数是否正确 不推荐的文档:


注意:您的构造函数是有效的。

以下内容在PHP中有效吗?你试过了吗?StackOverflow不是你的编译器。试一下,看看是否有效。同意他尝试,但问题是,即使有效,这是正确的做法吗?“我想一个新来的人会问一个公平的问题吗?”蒂姆库珀-我想我的问题措辞很糟糕。根据我有限的经验,事情往往在不应该的时候起作用。我已经用PHP和Javascript做了很多次不该做的事情,后来我才知道我不该这么做。除了询问我所做的在语法上是否正确,我还想看看这是否被认为是一种可接受的做法。谢谢你的否决票。@TimCooper-哦,顺便说一句,我确实试过了:效果很好。注意,我没有问它是否有效,而是问它是否有效?你试过了吗?StackOverflow不是你的编译器。试一下,看看是否有效。同意他尝试,但问题是,即使有效,这是正确的做法吗?“我想一个新来的人会问一个公平的问题吗?”蒂姆库珀-我想我的问题措辞很糟糕。根据我有限的经验,事情往往在不应该的时候起作用。我已经用PHP和Javascript做了很多次不该做的事情,后来我才知道我不该这么做。除了询问我所做的在语法上是否正确,我还想看看这是否被认为是一种可接受的做法。谢谢你的否决票。@TimCooper-哦,顺便说一句,我确实试过了:效果很好。注意,我没有问它是否有效,我问它是否有效。。没有道理。你能把“时间”改成“类型”吗。。一个输入错误,仍然没有意义?如果你在构造函数中创建相同的类,它将导致一个递归循环。。没有道理。你能把“时间”改成“类型”吗。。输入错误,仍然没有意义?如果你在构造函数中创建相同的类,它将导致递归循环…抱歉,这是拼写检查器的错误现在修复我编辑了我的答案抱歉,这是拼写检查器的错误现在修复我编辑了我的答案