0

含まれているページでこのクラス関数を使用できることを含めた後、1つの関数を持つテストクラスがありますが、含まれているページの関数でこの関数を使用することはできません。

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

サブ関数でテストクラスを使用したい

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

別の方法として(IMHOの方が良い)、関数を として宣言できるため、クラス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 に答える