2016-05-12 25 views
-2

我有如下因素PHP代碼和類在不同的文件:Object參數不工作 - > 「通知:未定義的屬性:......」

/CH-ffhs-WEBE-timemanager-控制器/ AnmeldenCtrl.php:行

<?php 
     include "../ch-ffhs-webe-timemanager-database/Datenbank.php"; 
     include "../ch-ffhs-webe-timemanager-model/Benutzer.php"; 

     $db = new Datenbank(); 
     $benutzer = new Benutzer(); 
     $benutzer->setBenutzername($_POST["bname"]); 
     $benuName = $benutzer->getBenutzername(); 
     echo $benuName; 
     $benutzer->setPasswort($_POST["passwd"]); 
     $pwd = $benutzer->getPasswort(); 
     echo $pwd; 
     if ($db->loginBenutzer($benutzer)) { 
      echo "<p>Zugang erlaubt</p>"; 
     } else { 
      echo "<p>Zugang eigentlich nicht erlaubt ...</p>"; 
     } 
    ?> 

/ch-ffhs-webe-timemanager-database/Datenbank.php

<?php 
include "../ch-ffhs-webe-timemanager-database/IDatenbank.php"; 

class Datenbank implements IDatenbank { 

    public function __construct() { 

    } 

    /** 
    * Diese Methode meldet einen Beunutzer an das 
    * Zeiterfasssungssystem an 
    * @param benuter :Benutzer 
    * @return true falls Login erfolgreich, sonst false 
    * 
    * {@inheritDoc} 
    * @see IDatenbank::loginBenutzer() 
    */ 
    public function loginBenutzer($benutzer) { 

     $passwort = $benutzer->getPasswort;   // error 
     $hashPW = $this->createHash($passwort); 

     if(password_verify($hashPW, $gespeicherter_hash)) { 
      return true; 
     } else { 
      echo false; 
     } 
    } 

    public function createHash($password) { 

     return $hash = password_hash($password, PASSWORD_DEFAULT); 
    } 
. 
. 
} 
?> 

評論與 「錯誤」 我成爲這樣的錯誤:

Notice: Undefined property: Benutzer::$getPasswort in C:\xampp\htdocs\eclipseWS\TimeManager\application\ch-ffhs-webe-timemanager-database\Datenbank.php on line 24

但是在AnmeldenCtrl.php中調用「$ pwd = $ benutzer-> getPasswort();」工作正常。

任何幫助,請和謝謝...

這裏的最後一堂課

/ch-ffhs-webe-timemanager-model/Benutzer.php

<?php 

class Benutzer { 

private $benutzername; 
private $passwort; 

public function __construct() { 

} 

/** 
* benutzername 
* @return String 
*/ 
public function getBenutzername(){ 
    return $this->benutzername; 
} 

/** 
* benutzername 
* @param String $benutzername 
* @return Benutzer 
*/ 
public function setBenutzername($benutzername){ 
    $this->benutzername = $benutzername; 
    return $this; 
} 

/** 
* passwort 
* @return String 
*/ 
public function getPasswort(){ 
    return $this->passwort; 
} 

/** 
* passwort 
* @param String $passwort 
* @return Benutzer 
*/ 
public function setPasswort($passwort){ 
    $this->passwort = $passwort; 
    return $this; 
} 

} ?>

+0

我能解決這個問題。我忘記了函數名 - > $ passwort = $ benutzer-> getPasswort(); ... ups,一個恥辱的錯誤....;) – oxid2178

回答

0

對於函數調用,您缺少()

$passwort = $benutzer->getPasswort; 

應該

$passwort = $benutzer->getPasswort(); 

上有類無屬性getPasswort,它是一個功能。

0

有代碼中的小疏忽:

//$passwort = $benutzer->getPasswort;   // YOU SHOULD BE CALLING YOUR GETTER METHOD HERE: 

    $passwort = $benutzer->getPasswort();   //<== WITH THE BRACKETS 

否則,你的代碼似乎很OK ...

+0

謝謝我看到..;) – oxid2178