2012-07-10 3 views
13

나는 데이터베이스에 지불 기록을 삽입하는 아주 작은 클래스를 가지고 있습니다. 아래와 같습니다 :정적 함수에 치명적인 오류가 나타나는 이유

<?php 

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

?> 

그러나 브라우저가 아래 치명적인 오류를 제공합니다 ..

Fatal error: Constructor pay::pay() cannot be static in F:\xampp\htdocs\new\sts\class.php on line 41

나는 오류가 발생하는 이유는 .. 내가 이해하는 데 도움이하시기 혼란 스러워요.

답변

28

클래스 이름과 동일한 메소드 이름이 있으면 생성자로 간주됩니다. 생성자는 정적 일 수 없습니다. 이 클래스 또는 메서드의 이름을 바꾸거나 메서드 이 아닌 정적으로 만들어야하고 클래스를 사용할 때 클래스의 인스턴스를 만들어야합니다.

9

PHP 5에서 생성자는 __construct입니다. PHP 4에서는 클래스의 이름을 사용했습니다. class pay에 대해서는 function pay입니다. PHP 5는 PHP 4와의 하위 호환이 가능하므로 여전히 작동합니다. 생성자는 static 일 수 없습니다.

1

생성자는 객체 생성시 호출되므로 정적 일 수 없습니다. 클래스와 동일한 함수의 이름을 지정하면 PHP가 생성자가 될 것이라고 생각합니다.

1

정의 된 클래스의 이름과 동일한 이름의 메소드는 일반적인 메소드가 아니라 생성자 클래스의 새 인스턴스를 만듭니다. 생성자는 새로 생성 된 클래스 인스턴스에서 작동하기 때문에 정적이 될 수 없습니다.

관련 문제