0

こんにちは、私はphpが初めてで、クラスを学ぼうとしています クラスに記述されているすべての関数*名前*を取得する次のコードを試していますクラス内の関数の出力を印刷する方法を教えてください

<?php
    class dog {
                    public function bark() {
                    print "Woof!\n";
                    }

                    public function legs() {
                    print "four!\n";
                    }
             }

    class poodle extends dog {
      public function yip() {
            print "Yipppppppp!\n";
        }
    }

    $poppy = new poodle;

    //$poppy->bark();
    $class_methods = get_class_methods(new poodle());
    //echo    $class_methods;
        foreach($class_methods as $class_methods1)
        {
        echo $class_methods1.'<br/>';
        }

?> 
4

3 に答える 3

1

これはうまくいくはずです:

$poodle = new poodle();
$class_methods = get_class_methods($poodle);
//echo    $class_methods;
foreach($class_methods as $class_method)
{
    echo $class_method.'\'s Output: '.$poodle->$class_method()."<br />"; 
}

一般に:

次のような値がある場合は、$test = "abc"(php で) 変数名または関数などに評価できます。

$test = "abc";
$test() // equal to abc() - if function abc exists.

echo $$test // equal to echo $abc - if $abc is defined.

$anotherTest = new $test(); // equal to new abc() - if class exists.
于 2013-01-18T10:21:05.953 に答える
0

メソッド名の代わりに変数を使用して、必要なことを行うことができます。注:メソッドはすべて何かを返しますが、実際には何も返さないechoため、メソッド呼び出しの結果は必要ありません。print

デモ

$poppy = new poodle;

$class_methods = get_class_methods($poppy);

foreach($class_methods as $class_methods1)
{
   $poppy->$class_methods1() . '<br/>';
}

出力

Yipppppppp!
Woof!
four!
于 2013-01-18T10:21:11.677 に答える
0
$poppy = new poodle;

$class_methods = get_class_methods($poppy);

foreach($class_methods as $class_method_name)
{
    echo $class_methods_name.' => '
        // Either:
        .$poppy->$class_method_name()
        // OR (prefered method, but more typing)
        .call_user_func(array($poppy, $class_method_name))

        .'<br/>';

}
于 2013-01-18T10:19:50.050 に答える