0

index.php と class_lib.php の 2 つのファイルがあります。

ここにindex.phpがあります

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
    <meta http-equiv="Content-Type" content="text/html;
    charset=iso-8859-1" />
    <title>OOP in PHP</title>
    <?php include("class_lib.php"); ?>
</head>
<body>
        <?php
            $adrian = new person();
            $jimmy = new person;

            $adrian = set_name('adrian de cleir');
            $jimmy = set_name('jimmy darmady');

            echo $adrian->get_name();

    ?>

</body>
</html>

およびクラスを含むファイル

<?php
    class person {

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



    }
?>

ページをロードすると Fatal error: Call to undefined function set_name() in /var/www/php_learning_testing/index.php on line 15 が表示されます

助けてくれてありがとう、それはばかげていると確信しています。

4

4 に答える 4

6

set_nameグローバルスコープには存在しませんが、オブジェクトの外にあるだけで、。を使用して正しく実行していますget_name

        $adrian = new person();
        $jimmy = new person;

        $adrian->set_name('adrian de cleir');
        $jimmy->set_name('jimmy darmady');

        echo $adrian->get_name();

既存のコード(set_name実際に存在し、値を返す必要があります)は、オブジェクトpersonを戻り値.で上書きするだけですset_name。非静的クラスメソッドを呼び出すときは常に、インスタンスを参照する必要があります。

于 2013-01-11T12:20:22.737 に答える
1

行で

$adrian = set_name('adrian de cleir');
$jimmy = set_name('jimmy darmady');

オブジェクトのメソッドを呼び出す必要があります。

$adrian->set_name('adrian de cleir');
$jimmy->set_name('jimmy darmady');
于 2013-01-11T12:20:06.293 に答える
0

jimmyの場合、$jimmy=新しい人がいます。あなたが持っている必要があります

$jimmy = new person();

次に、クラスメソッドを呼び出すには

$jimmy->set_name('bla');
于 2013-01-11T12:21:36.540 に答える
0

関数の前に public を設定してみてください。また、var in を private に置き換えます。私が知る限り、var は php には存在しません ;)

于 2013-01-11T12:23:09.477 に答える