Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将$this传递给非对象函数_Php - Fatal编程技术网

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();
}