Php 如何将$this传递给非对象函数
当我将Php 如何将$this传递给非对象函数,php,Php,当我将$this传递给一个函数时,我收到如下错误消息,该函数不存在。 // In class A class A extents F { function m() { Do($this); } function t() { } } class B extents F { function m() { Do($this); } function t() { }
$this
传递给一个函数时,我收到如下错误消息,该函数不存在。
// In class A
class A extents F
{
function m()
{
Do($this);
}
function t()
{
}
}
class B extents F
{
function m()
{
Do($this);
}
function t()
{
}
}
// Some where in .inc.php file
function Do(F $obj)
{
$obj->t();
}
实际上,我有许多类是从一个基类继承的。所有这些类都有一些共同的函数。我需要一个函数来处理它们。您不能将Do()
用作函数名,因为它是
此外,您不能使用扩展
,因为它是扩展
此外,您不能使用扩展F
,因为您在那里没有类F
这个有效
用extends
替换extends
您有一些错误。例如,PHP不支持类型暗示(Do(F$obj)
不正确,应该是Do($obj)
)。此外,您是否尝试删除Do函数的F类要求?因为如果抽象类中没有t()方法,那么我认为这可能是问题所在。@JaredFarrish PHP确实支持类型暗示afaik@Jared:PHP确实支持对象类型提示:@hakre:您的编辑不只是某种描述吗,注释$obj应该包含什么?以及稍后调用t()
,这实际上是一个先决条件,不仅仅是一个评论。@MichaelMadsen:真的吗?看,你会发现这没什么关系(在这种情况下)@Michael Madsen:不用TU DO代币。
<?php
class F{
}
class A extends F
{
function m()
{
_Do($this);
}
function t()
{
echo "<br />Class A works";
}
}
//removed unused class B
$a = new A();
$a->m();
// Some where in .inc.php file
// Changed Do to _Do, because Do is reserved word
function _Do(A $obj)
{
$obj->t();
}