PHP

abstract

수업소개

abstract는 클래스의 메소드를 하위 클래스가 반드시 오버라이드 하도록 하는 것입니다. 이것을 통해서 부모 클래스의 일부 기능을 하위 클래스가 구현하도록 강제할 수 있습니다. 

이 수업에서는 디자인 패턴이 무엇인가를 설명합니다. 그 중에서 템플릿 메소드 패턴을 통해서 추상 클래스가 사용되는 구체적인 사례를 살펴봅니다. 

수업

소개

형식

 

<?php
abstract class ParentClass
{
    public function a()
    {
        echo 'a';
    }
    public abstract function b();
}
class ChildClass extends ParentClass
{
    public function b()
    {
        
    }
}

 

사례 : 템플릿 메소드 패턴

템플릿 메소드 패턴 구현

 

<?php
abstract class AbstractPageTemplate
{
    protected final function template()
    {
        $result = $this->header();
        $result .= $this->article();
        $result .= $this->footer();
        return $result;
    }
    protected abstract function header();
    protected abstract function article();
    protected abstract function footer();
    public function render()
    {
        return $this->template();
    }
}
class TextPage extends AbstractPageTemplate
{
    protected function header()
    {
        return "PHP\n";
    }
    protected function article()
    {
        return "PHP: Hypertext Preprocessor\n";
    }
    protected function footer()
    {
        return "website is php.net\n";
    }
}
class HtmlPage extends AbstractPageTemplate
{
    protected function header()
    {
        return "<header>PHP</header>\n";
    }
    protected function article()
    {
        return "<article>PHP: Hypertext Preprocessor</article>\n";
    }
    protected function footer()
    {
        return "<footer>website is php.net</footer>\n";
    }
    public function render()
    {
        $result = '<html>';
        $result .= $this->template();
        return $result.'</html>';
    }
}
echo '<h1>text</h1>';
$text = new TextPage();
echo $text->render();

echo '<h1>html</h1>';
$html = new HtmlPage();
echo $html->render();

 

댓글

댓글 본문
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기