如何在另一个函数中调用php类函数

时间:2017-09-06 11:16:17

标签: php oop

如何在具有对象或包含的类文件的全局函数中调用类函数。

cls.php是正在使用的类文件。

class tst { public function abc($i) { return $i*$i ; }

需要在文件two.php

中的xyzfunction中调用abc函数
include('cls.php');
$obj = new tst();
function xyz($j){$result = $obj->abc($j);return $result;}
echo xyz(5);

调用$obj->abc($j)无效。如何调用函数abc()

6 个答案:

答案 0 :(得分:2)

尝试这样做,首先require_once文件。然后使用$cls代码创建一个新的类实例,然后使用最后一行代码执行一个函数。

   require_once('cls.php');
   $cls = new cls();
   $cls->function();

确保它位于您的功能中,例如

public function new_function() {
       require_once('cls.php');
       $cls = new cls();
       $result = $cls->function();
       return $result;
}

然后在你的函数中将响应发送到你当前的函数,例如

$res = $cls->new_function();
$cls->function($res);

答案 1 :(得分:0)

您必须在函数内部实例化对象,而不是在外部。

 function xyz($j){
    $obj = new tst();
    $result = $obj->abc($j);return $result;
 }

答案 2 :(得分:0)

参考以下代码:

<?php

function xyz($j){   
    $obj = new tst();
    $result = $obj->abc($j);
    return $result;
}
?>

类实例化必须在函数调用

中完成

答案 3 :(得分:0)

如果你要在更多的函数中使用它,你可以在函数外部实例化类,并作为参数传递给这样的函数。另外你在函数内实例化类。

<?php
class tst { 

    public function abc($i) { 

        return $i*$i ; 

    }
}

$obj = new tst();

function xyz($j,$obj){

   $result = $obj->abc($j);
   return $result;

}

echo xyz(5,$obj);  
?>

答案 4 :(得分:0)

也许您应该使用命名空间

namespace /tst 
class tstClass { publienter code herec function abc($i) { return $i*$i ; }

然后

use tst/tstClass
$tst = new tstClass();
$result = $obj->abc($j);
return $result;

答案 5 :(得分:0)

你忘了注入你的依赖。

<?php

/**
 * @param int $j
 * @param tst $obj
 * @return int
 */
function xyz($j, tst $obj)
{
    $result = $obj->abc($j);
    return $result;
}

不要在函数内实例化类,这是不好的做法。阅读依赖注入。