2013-04-07 4 views
0

안녕하세요 저는 자신의 간단한 템플릿 시스템 종류 인 을 만들려고 노력하고 있습니다. 클래스와 객체를 사용하여 클래스를 학습하려고합니다.클래스가있는 템플릿 파일이 필요합니다

$template = new Includes('name', 'path'); 
$include = new Includes('name', 'path'); 

을하지만 그것이 필요는 없습니다 느낌, 그것의 꽤하지 : 나는 모든 문서의 상단에 넣고 경우

가 작동합니다.

의 index.php를 :

<?php 
require_once 'class_include.php'; 
$template->loadTemplate('body'); 

body.php :

<?php require_once 'class_include.php'; ?> 
    <head> 

    <?php $template->loadTemplate('head'); ?> 

</head> 
<body> 

<?php 
    $template->loadTemplate('sidepanel'); 
    $template->loadTemplate('content'); 
?> 
</body> 

class_include.php을

이 내 코드는 지금 배치하는 방법입니다 :

class Includes { 

public function loadTemplate($name, $path = 'template'){ 
    require_once "$path/$name.php"; 
} 
public function loadInc($name, $path = 'inc'){ 
    require_once '$path/$name' . '.php'; 
} 
} 
$template = new Includes('name', 'path'); 
$include = new Includes('name', 'path'); 

오류 메시지 :

(!) 치명적인 오류 : C에서 비 객체의 멤버 함수 loadTemplate()로 전화 : \ WAMP \ WWW \ 프로젝트 \ 템플릿 \ body.php

() 공지 사항 :! 정의되지 않은 변수를 템플릿 C : \ wamp \ www \ project \ template \ body.php

도움을 주셔서 감사합니다!

답변

0

코드에서 코드 대신 객체 대신 정적 메서드를 사용해야한다고 생각하십시오.
index.php를

<?php 
require_once 'class_include.php'; 
Includes::loadTemplate('body'); 

body.php

<head> 
    <?php Includes::loadTemplate('head'); ?> 
</head> 
<body> 
    <?php 
     Includes::loadTemplate('sidepanel'); 
     Includes::loadTemplate('content'); 
    ?> 
</body> 

class_includes.php 잘 작동하지만 정적 인 방법이며 어떤

class Includes { 

    public static function loadTemplate($name, $path = 'template'){ 
     require_once "$path/$name.php"; 
    } 

    public static function loadInc($name, $path = 'inc'){ 
     require_once '$path/$name' . '.php'; 
    } 
} 
+0

차이는 무엇인가? 네스? – objectnobb

+0

정적 메서드 (또는 속성)를 사용하면이 인스턴스를 만들지 않고도 클래스를 사용할 수 있습니다. https://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methods – Yefb

+0

왜 정적이 아닌 것을 사용하고 싶습니까? – objectnobb

관련 문제