如何在具有对象或包含的类文件的全局函数中调用类函数。
cls.php
是正在使用的类文件。
class tst { public function abc($i) { return $i*$i ; }
需要在文件two.php
include('cls.php');
$obj = new tst();
function xyz($j){$result = $obj->abc($j);return $result;}
echo xyz(5);
调用$obj->abc($j)
无效。如何调用函数abc()
?
答案 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;
}
不要在函数内实例化类,这是不好的做法。阅读依赖注入。