2016-08-04 5 views
3

저는 PHP OOP를 사용하여 사용자 지정 CMS에서 작업하고 있습니다. 실제로 이것은 객체 지향 프로그래밍으로 만들어진 첫 번째 프로젝트이기 때문에 많은 경험이 없습니다. 내가 settings.php 불리는이 방법으로 그것을라고 다른 파일에서이 파일을 포함했다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; 
    } 
} 
?> 

: 기본적으로 나는 MySQL 데이터베이스의 테이블 중 하나에서 데이터를 검색하고 이렇게되면 Site.class.php라는 클래스가

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

그때 나는이 같은 변수에서 반향 시도 :

<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> 

을하지만 문제는 내가이 FIL 호출 할 때마다 것입니다

정의되지 않은 속성 : 사이트 : $ getSiteName

가 정의되지 않은 속성 : 무엇 사이트 : $ getSiteUrl이

나도 몰라 전자,이 오류 메시지가 나타납니다 모든 것을 올바르게 코딩했기 때문에 실제로 잘못되었습니다! 그래서이 질문을 해결하는 방법을 알고 있다면 알려주세요. 정말로 감사드립니다. 미리 감사드립니다.

+0

사이드 노트 :'__call ($ name)'메소드를 사용하고 변수를 호출하는 모든 메소드를 제거하면 몇 줄을 절약 할 수 있습니다. 마법 방법 안에서'$ split = preg_split ('/ (? = [A-Z]) /', $ name); $ var = strtolower ($ split [1] .'_ '. $ split [2]); '$ this-> site_name'를 동적으로 반환합니다. $ this-> {$ var};'$ this-> site_name'을 동적으로 반환합니다. 기계적으로 똑같은 일을하는 수많은 방법을 쓰지 않아도됩니다. 생각할 게있어. – Rasclatt

+0

OOP를 사용하면 바로 뛰어 내리고 싶다는 생각이 듭니다. 어서가! –

답변

2

두 가지 방법입니다. 메서드를 호출하려면 끝에()를 추가해야합니다.

<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> 
관련 문제