0

さて、私はクラスを持っています、そして私が関数を呼び出すときはいつでもそれはそれらをスキップしますなぜそれが起こるのですか?

これが私のコードです:

$name = $this->name("Matt"); //returns "Hello Matt";
$welcome = $this->wel();
echo $name."\n";
echo $welcome;
echo "End.";

function name($name){
return "Hello ".$name;
}
function wel(){
return "Good morning";
}

しかし、'echo"end"までスキップします。'変数を設定しましたが、もう一度試してみるとうまくいきました。しかし、それはその行をスキップしてからそれらに戻るようなものです何が問題なのですか?

4

4 に答える 4

0

すべてのコードをクラスに入れると、期待どおりに機能しました。

class Person {
    function __construct() {
        $name = $this->name("Matt"); //returns "Hello Matt";
        $welcome = $this->wel();
        echo $name."\n";
        echo $welcome;
        echo "End.";
    }

    function name($name){
        return "Hello ".$name;
    }
    function wel(){
        return "Good morning";
    }
}


$matt = new Person();

この出力がありました:

Hello Matt
Good morningEnd.

しかし、私はこれがあなたが望んでいることの多くかもしれないと思います:

class Person {
    var $name;

    function __construct($name = '') {
        if ($name) $this->name = $name;
    }

    function name(){
        return "Hello " . $this->name;
    }
    function wel(){
        return "Good morning " . $this->name;
    }
}


$person = new Person('Matt');
print $person->name();
print $person->wel();

この出力があったもの:

Hello MattGood morning Matt
于 2012-09-20T20:22:37.440 に答える
0

$thisオブジェクト クラスのメンバーであり、オブジェクト コンテキストで呼び出される関数でのみ使用できます。「外側」の場合、$this は未定義であり、オブジェクトではありません。エラー/警告について言及していないので、おそらく display_errors と error_reporting がオフになっています。特に学習をテスト/開発している場合は、これらをオンにする必要があります。

于 2012-09-20T20:17:50.313 に答える
0

クラス宣言内にメソッド/関数を含める必要があります。

$thisクラス内でのみ利用可能

<?php

class yourclass{

    function name($name){
        return "Hello ".$name;
    }

    function wel(){
        return "Good morning";
    }


}

$your_object = new yourclass();

$name = $your_object->name("Matt"); //returns "Hello Matt";

$welcome = $your_object->wel();

echo $name."\n";
echo $welcome;
echo "End.";

?>

使用例$this

<?php
class yourclass{

    function set_name($name){
        $this->name = $name;
        return $this;
    }

    private function welcome(){
        return "Good morning";
    }

    /*example Using $this*/
    function output(){
        echo 'Hello, '.$this->name . PHP_EOL,
              $this->welcome() . PHP_EOL,
             'End.';
    }
}

$your_object = new yourclass();

$your_object->set_name("Matt")->output();
/*
Hello, Matt
Good morning
End.
*/
?>
于 2012-09-20T20:19:41.000 に答える
0

これがコードの単なるスニペットでない限り、クラスの実装ではありません。関数を呼び出すために $this を使用する必要はありません。

$name = name("Matt"); //returns "Hello Matt";
$welcome = wel();
于 2012-09-20T20:20:38.047 に答える