我阅读了其他语言的几个问题和答案,但没有看到任何专门针对PHP的问题。
以下内容在PHP中是否有效?
class foo
{
// constructor, etc..
public function bar()
{
$newFoo = new foo();
// do something
}
}
答案 0 :(得分:1)
是的,这是有效的,只要你不在构造函数中创建相同类型的对象。
答案 1 :(得分:1)
是的,它会有效。您可以创建嵌套的对象集。 (虽然在构造函数中执行它会导致无限递归!)
额外!您甚至可以将对象链接到自身!
$this->myself = $this;
它会链接到同一个对象。
答案 2 :(得分:1)
没有什么可以阻止它。
答案 3 :(得分:1)
简短回答:是的,它有效!
您可以在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
}
}
我希望它有所帮助。干杯
答案 4 :(得分:0)
知道PHP中某些内容是否有效的最佳方法是在头文件中使用此函数:
<?php
error_reporting(E_ALL|E_NOTICE);
?>
即使是PHP也会报告失败,例如不使用“isset()”。
其他做法:
始终使用$_GET
,$_POST
代替global
请勿使用此项:$_GET["test"]
这是最好的$_GET['test']
请务必阅读PHP文档,了解该功能是否正常 已弃用(doc:http://www.php.net/manual)
Note:
你的“构造函数”是“有效的”。