我有一个函数的测试类,包括我可以使用包含页面的这个类函数,但我不能在包含页面的函数上使用此函数,例如:
testClass.php :
class test
{
public function alert_test( $message )
{
return $message;
}
}
包括课程: 在这个使用类我没有问题
text.php :
<?php
include 'testClass.php';
$t= new test;
echo alert_test('HELLO WORLD');
?>
但我不能使用alert_test函数:
<?php
include 'testClass.php';
$t= new test;
function test1 ( $message )
{
echo alert_test('HELLO WORLD');
/*
OR
echo $t->alert_test('HELLO WORLD');
*/
}
?>
我想在子功能中使用测试类
答案 0 :(得分:1)
echo $t->alert_test('HELLO WORLD');
怎么样?您必须'告诉'PHP他必须在哪里找到该函数,在本例中是$ t,它是测试类的一个实例。
<?php
include 'testClass.php';
function test1 ( $message )
{
$t = new test;
echo $t->alert_test('HELLO WORLD');
}
?>
答案 1 :(得分:0)
即使在第一个示例中,您也应该“遇到问题”,因为alert_test()
是test
类的实例函数。
您必须将实例方法调用为:
$instance -> method( $params );
所以:
$t -> alert_test();
但是本地函数[作为你的test1
]不应该依赖于全局对象:如果需要,可以将它们作为函数参数传递。
答案 2 :(得分:0)
您应该将实例($t
)传递给您的函数,即:
<?php
class test
{
public function alert_test( $message )
{
return $message;
}
}
$t = new test;
function test1 ( $message, $t )
{
echo $t->alert_test('HELLO WORLD');
}
作为替代方案(更好的恕我直言),你可以将你的函数声明为static
,这样你甚至不需要实例化test
类,即:
class Message {
static function alert($message) {
echo $message;
}
}
function test_alert($msg) {
Message::alert($msg);
}
test_alert('hello world');
答案 3 :(得分:0)
您可以使用闭包:
$t = new test;
function test1($message) use ($t) {
$t->test_alert($message);
}