0

我有一个功能的测试类,包括后我可以使用包含页面的此类功能,但我不能在包含页面的功能上使用此功能,例如:

测试类.php

class test
{
    public function alert_test( $message )
     {
       return $message;
     }
}

包括类:在这个使用类中我没有问题

文本.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');
*/
 }
 ?>

我想在子功能中使用测试类

4

4 回答 4

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');
}
?>
于 2013-05-26T16:12:56.467 回答
0

即使在您的第一个示例中,您也应该“遇到问题”,因为alert_test()它是您的test类的实例函数。

您必须调用实例方法:

$instance -> method( $params );

所以:

$t -> alert_test();

但是局部函数 [as your test1] 不应该依赖全局对象:如果需要,将它们作为函数参数传递。

于 2013-05-26T16:16:26.980 回答
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');
于 2013-05-26T16:16:50.743 回答
0

您可以使用闭包:

$t = new test;
function test1($message) use ($t) {
    $t->test_alert($message);
}
于 2013-05-26T16:22:38.747 回答