我阅读了其他语言的几个问题和答案,但没有看到任何专门针对 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;
它会链接到同一个对象。
没有什么可以阻止它。
简短的回答:是的,它有效!
您几乎可以在 php 代码的任何位置实例化您的对象。类方法内部没有什么不同,但是如果它是不同的类,则必须确保首先包含您的类文件,例如
<?php
require_once './foo.class.php';
class bar{
//class stuff
public doThingsWithFoo(){
$foo = new foo();
}
}
?>
在您的特定情况下,您似乎正在搜索$this关键字。从手册:
当从对象上下文中调用方法时,伪变量 $this 可用。$this 是对调用对象的引用(通常是方法所属的对象,但也可能是另一个对象,如果该方法是从辅助对象的上下文中静态调用的)。
那么在你的例子中:
class foo
{
// constructor, etc..
public function bar()
{
$this->useAMethodFromThisClass();
// do something
}
}
但是在同一个类的方法中使用同一个对象的另一个实例没有什么(除了常识),就像你正在做的那样:
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()”。
其他做法:
始终使用$_GET
,$_POST
而不是global
不要使用这个:$_GET["test"]
这是最好的$_GET['test']
请务必阅读 PHP 文档以查看该函数是否已弃用(文档:http ://www.php.net/manual )
Note:
您的“构造函数”是“有效的”。