저는 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이
나도 몰라 전자,이 오류 메시지가 나타납니다 모든 것을 올바르게 코딩했기 때문에 실제로 잘못되었습니다! 그래서이 질문을 해결하는 방법을 알고 있다면 알려주세요. 정말로 감사드립니다. 미리 감사드립니다.
사이드 노트 :'__call ($ name)'메소드를 사용하고 변수를 호출하는 모든 메소드를 제거하면 몇 줄을 절약 할 수 있습니다. 마법 방법 안에서'$ split = preg_split ('/ (? = [A-Z]) /', $ name); $ var = strtolower ($ split [1] .'_ '. $ split [2]); '$ this-> site_name'를 동적으로 반환합니다. $ this-> {$ var};'$ this-> site_name'을 동적으로 반환합니다. 기계적으로 똑같은 일을하는 수많은 방법을 쓰지 않아도됩니다. 생각할 게있어. – Rasclatt
OOP를 사용하면 바로 뛰어 내리고 싶다는 생각이 듭니다. 어서가! –