2016-08-04 5 views
3

Ich arbeite an einem benutzerdefinierten CMS mit PHP OOP und das ist eigentlich mein erstes Projekt überhaupt, die mit objektorientierten Programmierung gemacht wird, so dass ich nicht so viel Erfahrung damit habe. Im Prinzip habe ich eine Klasse namens Site.class.php, die Daten aus einer der Tabellen in MySQL-Datenbank abruft und geht so:Undefinierte Eigenschaft Fehlermeldung in PHP OOP

<?php 
class Site 
{ 
    public $id,$site_name,$site_title,$site_url,$site_tags,$site_desc; 
    public function __construct() 
    { 
     $this->db = new Connection(); 
     $this->db = $this->db->dbConnect(); 
    } 
    public function getSite($name) 
    { 
     if(!empty($name)) 
     { 
      $site = $this->db->prepare("select * from admins where site_name = ?"); 
      $site->bindParam(1,$name); 
      $site->execute(); 
      while($row = $site->fetch()) 
      { 
       $this->id   = $row['id']; 
       $this->site_name = $row['site_name']; 
       $this->site_title = $row['site_title']; 
       $this->site_url  = $row['site_url']; 
       $this->site_tags = $row['site_tags']; 
       $this->site_desc = $row['site_desc']; 
      } 
     } 
     else 
     { 
      header("Location: maint/php/includes/errors/005.php"); 
      exit(); 
     } 
    } 
    public function getID() 
    { 
     return $this->id; 
    } 
    public function getSiteName() 
    { 
     return $this->site_name; 
    } 
    public function getSiteTitle() 
    { 
     return $this->site_title; 
    } 
    public function getSiteUrl() 
    { 
     return $this->site_url; 
    } 
    public function getSiteTags() 
    { 
     return $this->site_tags; 
    } 
    public function getSiteDesc() 
    { 
     return $this->site_desc; 
    } 
} 
?> 

ich diese Datei in einer anderen Datei enthalten sind, die settings.php genannt wird und nannte es auf diese Weise:

$siteSet = new Site(); 
$siteSet->getSite("Daygostar"); 

Dann habe ich versucht, wie dies aus den Variablen Echo:

<div class="box-body"> 
       <div class="row"> 
        <div class="col-md-6"> 
         <div class="form-group"> 
          <label for="usr">Site Name:</label> 
          <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteName; ?>"> 
         </div> 
         <div class="form-group"> 
          <label for="usr">User URL:</label> 
          <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteUrl; ?>"> 
         </div> 
        </div> 
       </div> 
      </div> 

Aber das Problem ist, dass, wenn ich diese fil nennen e, erhalte ich diese Fehlermeldung:

nicht definierte Eigenschaft: Site :: $ getSiteName

nicht definierte Eigenschaft: Site :: $ getSiteUrl

Ich weiß nicht, was geht wirklich schief, weil ich alles richtig codiert habe! Also, wenn Sie wissen, wie Sie diese Frage zu lösen, lass es mich wissen, ich schätze das wirklich .. Vielen Dank im Voraus.

+0

Seitennotiz: Sie sparen sich ein paar Zeilen, wenn Sie eine '__call ($ name)' Methode machen und alle Methoden entfernen, die Variablen aufrufen. Innerhalb der magischen Methode können Sie '$ split = preg_split ('/ (? = [A-Z]) /', $ name); $ var = strtolower ($ split [1] .'_ '. $ split [2]); return $ this -> {$ var}; 'damit $ $ obj-> getSiteName();' dynamisch $ 'this-> site_name' zurückgibt. Es erspart Ihnen, eine ganze Reihe von Methoden zu schreiben, die genau dasselbe tun. Etwas zum Nachdenken. – Rasclatt

+0

Ich finde es großartig, dass du direkt mit OOP springst. Tue es! –

Antwort

2

Das sind beide Methoden. Sie müssen das() an das Ende von ihnen hinzufügen, um die Methode aufzurufen.

<div class="box-body"> 
       <div class="row"> 
        <div class="col-md-6"> 
         <div class="form-group"> 
          <label for="usr">Site Name:</label> 
          <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteName(); ?>"> 
         </div> 
         <div class="form-group"> 
          <label for="usr">User URL:</label> 
          <input type="text" class="form-control" id="usr" disabled='disabled' value="<?php echo $siteSet->getSiteUrl(); ?>"> 
         </div> 
        </div> 
       </div> 
      </div>