15

データベースに支払い記録を挿入する小さなクラスがあります。以下が与えられます:

<?php

class pay{
        public static function pay($user, $income, $type, $refid='--'){
        mysql_query("INSERT INTO earn VALUES (NULL, '$user', '$income', '$refid', '$type', ".time().")");   
        }
    }

?>

しかし、ブラウザは以下の致命的なエラーを出します..

致命的なエラー: コンストラクター pay::pay() は F:\xampp\htdocs\new\sts\class.php の 41 行目で静的にすることはできません

エラーが発生した理由がわかりません。理解してください。

4

4 に答える 4

32

クラスの名前と同じメソッド名がある場合、それはコンストラクターと見なされます。コンストラクターを静的にすることはできません。このクラスまたはメソッドの名前を変更するか、メソッドを静的ではなく、使用するときにクラスのインスタンスを作成する必要があります。

于 2012-07-10T20:28:40.707 に答える
10

PHP 5 では、コンストラクターは と呼ばれ__constructます。PHP 4 では、クラスの名前でしfunction payclass pay。PHP 5 は PHP 4 と下位互換性があるため、引き続き動作します。コンストラクターを にすることはできませんstatic

于 2012-07-10T20:28:51.327 に答える
1

コンストラクターはオブジェクトの作成時に呼び出されるため、静的にすることはできません。関数にクラスと同じ名前を付けることで、php はそれをコンストラクターにしたいと考えます。

于 2012-07-10T20:29:14.203 に答える
1

定義されているクラスと同じ名前のメソッドは、通常のメソッドではなく、クラスの新しいインスタンスを作成するために使用されるコンストラクターです。コンストラクターは、新しく作成されたクラス インスタンスに作用することが全体のポイントであるため、静的であることは許可されていません。

于 2012-07-10T20:30:01.497 に答える