2012-01-15 14 views
-1

私はPDTとXdebugger(すべての最新バージョン)とEclipse IndigoとUbuntu 11.04のLAMPサーバーを実行しています。オブジェクト関数はPHPでは実行されません

デバッグ中、オブジェクト関数(​​下記のコードを参照)は実行されません。デバッガがデフォルトになります。変数ウィンドウは完全に空白になり、ただフリーズします。ページはロードされず、ローディング状態のままです。

私はオブジェクト上で関数を呼び出す点までは問題ありません。

提案?

<?php 
    require_once 'user.php'; 
    require_once 'fetcher.php'; 
    require_once 'inscriber.php'; 
    $uname=$_POST['regname']; 
    $upass=$_POST['regpass']; 
    $ufirst=$_POST['regfirst']; 
    $ulast=$_POST['reglast']; 
    $uemail=$_POST['regemail']; 
    $uphone=$_POST['regphone']; 

    $user = new User(); 
    $user->setUsername($uname); // THIS IS WHERE IT FREEZES UP 
    $user->setPassword($upass); 
    $user->setFirstname($ufirst); 
    $user->setLastname($ulast); 
    $user->setEmail($uemail); 
    $user->setPhone($uphone); 

    $inscriber = Inscriber::getInscriberInstance(); 
    $success = $inscriber->inscribeUser($user); 
    ?> 




<?php 
class User{ 

    private $username; 
    private $password; 
    private $userID; 
    private $firstname; 
    private $lastname; 
    private $phone; 
    private $email; 


    public function getUsername(){ 
     return $username; 
    } 

    public function setUsername($var){ 
     $this->$username = $var; 
    } 
    /// 

    public function getPassword(){ 
     return $password; 
    } 

    public function setPassword($var){ 
     $this->$password = $var; 
    } 
    /// 

    public function getUserID(){ 
     return $userID; 
    } 

    public function setUserID($var){ 
     $this->$userID = $var; 
    } 
    /// 

    public function getFirstname(){ 
     return $firstname; 
    } 

    public function setFirstname($var){ 
     $this->$firstname = $var; 
    } 
    /// 

    public function getLastname(){ 
     return $lastname; 
    } 

    public function setLastname($var){ 
     $this->$lastname = $var; 
    } 
    /// 

    public function getPhone(){ 
     return $phone; 
    } 

    public function setPhone($var){ 
     $this->$phone = $var; 
    } 
    /// 

    public function getEmail(){ 
     return $email; 
    } 

    public function setEmail($var){ 
     $this->$email = $var; 
    } 


} 
+0

フリーズする理由はありません。また、getterが 'return $ a_variable'の代わりに' return $ this-> someProperty'を返すべきではありませんか? – marcio

答えて

3
$this->$username = $var; 

これは、 "動的プロパティ" である:

は、ここでは、コードです。 PHPは$usernameを変数の内容に置き換えようとします。その結果$this-> = $varがちょうど

$this->username = $var; 

(非静的)プロパティは常に$なしで呼ばれているが失敗したので、変数は、存在しません。ゲッターで追加

あなたはローカル変数

を使用している
public function getUsername(){ 
    return $username; 
} 

か分からないのですか、なぜあなたセッターでプロパティを使用(して少なくとも試してください)が、ゲッターにローカル変数を使用

public function getUsername(){ 
    return $this->username; 
} 

Sidenote: "オブジェクト関数"は "メソッド"と呼ばれます

+0

ありがとうございます。私は実際にJavaから来ているので、メソッドの用語が適用されているかどうかはわかりませんでしたが、Javaではobvはメソッドです。 – yoaquim

+1

@paragoniq PHPの狂った世界へようこそ:-)ここでは、PHPのクラスとオブジェクトに精通する良い出典があります:http://php.net/manual/en/language.oop5.php – Quasdunk

2

構文が正しくない(この場合)。あなたはこれをやりたい:

//... 

public function getUsername(){ 
    return $this->username; //added $this->... 
} 

public function setUsername($var){ 
    $this->username = $var; //no $-sign before 'username' 
} 


//... 

これは他のすべての機能にも適用されます。

関連する問題